Toon posts:

[JAVA] repaint in JPanel

Pagina: 1
Acties:
  • 155 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben sinds een jaar een beetje bezig met JAVA, maar nu heb ik het volgende probleem:

Ik heb een applicatie die een JPanel tekent die maakt vervolgens een paar nieuwe klasses(Objecten) aan. Deze tekent die wel goed. Maar hoe kun je nu binnen zo'n klasse alles opnieuw laten tekenen. dus eigenlijk repaint() maar dit werk niet. ik kan ook geen Graphics opvragen met getGraphics oid.

Ik hoop dat het verhaal een beetje duidelijk is.

Oh jaah als je de grootte van het venster veranderd hertekent hij zichzelf wel. Ik heb al op java.sun.com gekeken maar kon nix vinden. BvD

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

in theorie zou het wel moeten werken.

Verwijderd

Topicstarter
[offtopic]
tis dus een principe kwestie :( misschien dat mn comp. het te warm vind ff raampje overzetten. (Hij doet het dus niet.)

[ontopic]
De bedoeling is dus dat als er een Timer event plaatsvind hij zichzelf hertekend.

[/all]

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20:59
Hmm, ik begrijp er helaas weinig van en het is me te warm om maar wat te raden. Ik kan me voorstellen dat anderen ook moeite met je vraag hebben, dus als je geen zinnig antwoord krijgt, moet je je vraagstelling wat verduidelijken.

Ik denk trouwens dat je uitleg beter zou zijn als je een wat beter begrip hebt van klassen en objecten. Een klasse is de 'blue print' van een object. Door een klasse te instantiëren (met 'new'), krijg je een object, dat aan de in de klasse gespecificeerde interface voldoet.

  • FoxMan
  • Registratie: September 2000
  • Laatst online: 21-08-2025
Je kunt denk ik het beste in je frame (of applet) de repaint neerzetten, bij mij werkt dat beter dan binnen het panel zelf..

LinuxFox, because penguins aren't even furry


Verwijderd

Topicstarter
Het word een applicatie, maar goed. Ik maak dus nieuwe Objecten aan. En binnen een van die Objecten zit een Timer(ook n object) en dan wil ik in de methode ActionPerformed graag iets uitvoeren en daarna ook repainten.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op maandag 17 juni 2002 21:58 schreef BrainDamage het volgende:
Het word een applicatie, maar goed. Ik maak dus nieuwe Objecten aan. En binnen een van die Objecten zit een Timer(ook n object) en dan wil ik in de methode ActionPerformed graag iets uitvoeren en daarna ook repainten.
Maak je gebruik van een Swing timer (want die voert zijn events uit op de swing event dispatching thread) of maak je gebruik van iets anders? Het meest handige is de 1e omdat je dan geen last heb van thread problemen, en kan je heel eenvoudig veranderen aanbrengen in swing objecten (dus items toevoegen ed). En als je daarna nog een repaint afvuurt (deze zit altijd op de swing event dispatching thread) dan moet het geen probleem opleveren.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op maandag 17 juni 2002 22:28 schreef Alarmnummer het volgende:

[..]

Maak je gebruik van een Swing timer (want die voert zijn events uit op de swing event dispatching thread) of maak je gebruik van iets anders? Het meest handige is de 1e omdat je dan geen last heb van thread problemen, en kan je heel eenvoudig veranderen aanbrengen in swing objecten (dus items toevoegen ed). En als je daarna nog een repaint afvuurt (deze zit altijd op de swing event dispatching thread) dan moet het geen probleem opleveren.
[aanvulmodus]
Swing is namelijk helemaal niet thread safe. Dat wil zeggen dat als je vanuit een thread iets probeert te wijzigen in swing terwijl een andere thread dat ook probeert te doen (de swing event dispatching thread) er niet zulke vrolijke dingen kunnen gebeuren, zoals deathlocks race-problemen thnx Alarmnummer.

Dit had voorkomen kunnen worden door Swing te synchroniseren. Echter dit is niet gedaan om verschillende redenen
• Gecompliceerd: erg moeilijk om te zien welke methodes je precies moet synchronizen omdat ze gevaar opleveren
• Snelheid. Synchronized methods zijn trager :)
[/aanvulmodus]

Verwijderd

Topicstarter
Uhm ja het is in ieder geval wel een Swing Object ja. Maar voorderest snap ik het niet helemaal. repaint() doet ie dus gewoon niet. En kans op fouten heb ik niet omdat elk object door 1 ander oject gebruimkt word.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op maandag 17 juni 2002 23:22 schreef BrainDamage het volgende:
Uhm ja het is in ieder geval wel een Swing Object ja. Maar voorderest snap ik het niet helemaal. repaint() doet ie dus gewoon niet. En kans op fouten heb ik niet omdat elk object door 1 ander oject gebruimkt word.
Maar maak je gebruik van de Swing timer class? Ik geloof (uit mijn blote hoofd) javax.swing.Timer

Verwijderd

Topicstarter
Op maandag 17 juni 2002 23:29 schreef Alarmnummer het volgende:

[..]

Maar maak je gebruik van de Swing timer class? Ik geloof (uit mijn blote hoofd) javax.swing.Timer
Ja dat is hum.

  • Potatoman
  • Registratie: September 2000
  • Laatst online: 05-09 01:13

Potatoman

koniwa

Weet er nog niet zoveel van hoor, maar misschien getContentPane().repaint() ?

The cyclographing developer


Verwijderd

Iets als validate() of revalidate() wil ook nog wel eens helpen.

Verwijderd

Topicstarter
Weet er nog niet zoveel van hoor, maar misschien getContentPane().repaint() ?
Op dinsdag 18 juni 2002 08:55 schreef graaff01 het volgende:
Iets als validate() of revalidate() wil ook nog wel eens helpen.
Neej helaas dit helpt ook niet. De laatste 2 compiled die wel maar heeft geen reaktie tot gevolg (iig niet zichtbaar). Als ik op de rand/border van het venster klik hertekend ie zich wel. getGrahics() levert nu trouwens NULL op.

Verwijderd

Topicstarter
Hmm niemand meer een id?? K kom dr echt nie uit :(

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op dinsdag 18 juni 2002 15:38 schreef BrainDamage het volgende:
Hmm niemand meer een id?? K kom dr echt nie uit :(
Moet je ons eerst eens uitleggen wat je aan het maken bent, want er kan zoveel fout gaan.

  • GF
  • Registratie: April 2002
  • Laatst online: 22-12-2025

GF

Method in de panel klasse aanroepen die een waarde van wat je tekent veranderd. Bijv. positie ofzo en dan daarna repaint() neerpleurt.

Verwijderd

Topicstarter
Ik ben een spelletje aan t maken. Het is de bedoeling dat er een loop komt waarbij vakjes kunne worden geopend door te drukken.
code:
1
2
3
4
5
6
7
Begin:     [*][ ][ ][ ][ ][ ][ ]

Daarna:   [ ][*][ ][ ][ ][ ][ ]

Nog later:     [ ][ ][*][ ][ ][ ][ ]

Nog wat later: [ ][ ][ ][*][ ][ ][ ]

Ik heb dus een applicatie die maakt een frame aan daarin wordt een JPanel getekend die alle knoppen verzorgt en een Object A aanmaakt, vervolgens maakt Object A Object B aan. De bedoeling van Object B is in dit geval dat hij alles moet gaan hertekenen nadat de status is veranderd. Is deze uitleg duidelijk genoeg? Of zal ik naar iemand ff alles mailen?? Ik heb nl. geen webspace op t moment.

Verwijderd

Topicstarter
Huhm nog een lief klein schopje dan maar.

  • Potatoman
  • Registratie: September 2000
  • Laatst online: 05-09 01:13

Potatoman

koniwa

Is het wel een JPanel en heb je er niet perongeluk een gewoon Panel van gemaakt?

The cyclographing developer


Verwijderd

Topicstarter
Jep extends JPanel erachter gegooid

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

mag eigelijk niet binnen 24 uur ;)

tip:

Je moet over gaan op Model View Controller. Hieronder heb ik de volgende classes gemaakt. Board, BoardItem (de model) en BoardItem button (view + controller). Een board daar staan al je stenen op, en daar doe je ook je moves. Je board geeft aan je board item door wat er veranderd is, en de board item die geeft dat dus door naar iedereen die naar hem luisterd. Toevallig luisterd de boardItembutton naar de boardItem, dus de button die past zichzelf aan. Als je niet werkt vanuit andere threads, moet die geen enkel probleem zijn.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public class Board{

    private static final int X_SIZE = 10;
    private static final int Y_SIZE = 10;

    //ik weet niet eens of java multi dimensionale arrays ondersteund :)
    private BoardItem[][] _boardItems = new BoardItem[X_SIZE][Y_SIZE]; 

    public void makeMove(){
            ....    
    }

    public void reset(){
        for(int x=0;x<X_SIZE;x++){
            for(int y=0;y<Y_SIZE;y++){
                _boardItems[x][y].setMarked(false);         
            }       
        }
    }
}

public class BoardItem{
    
    public final static String MARKED = "Marked";   
    
    private PropertyChangeSupport _changeSupport = new PropertyChangeSupport();

    private boolean _marked = false;

    public BoardItem(){
    
    }   

    public setMarked(boolean marked){
        if(marked  = _marked){
            return;     
        }

        boolean oldValue = _marked;
        _marked = marked;
        _changeSupport.firePropertyChange(MARKED, oldValue,_marked);
    }

    private addPropertyChangeListener(Stirng propertyName, PropertyChangeListener listener){
        _changeSupport.firePropertyChange(propertyName);    
    }
}


public BoardItemButton extends JButton{
    public BoardItemButton(BoardItem boardItem){
        super("-");
        if(boardItem ==null){
            throw new NullPointerException("boardItem can`t be null");      
        }       
        boardItem.addPropertyChangeListener(BoardItem.MARKED,new PropertyChangeListenerImpl()); 
    }

    private class PropertyChangeListenerImpl implements PropertyChangeListener{
        public void propertyChange(PropertyChangeEvent pce){
            Boolean newValue = (Boolen)pce.getNewValue();
            if(newValue.booleanValue()){
                setText("+");
            }else{
                setText("-");
            }   
        }   
    }
}

Verwijderd

Topicstarter
Java ondersteund idd multidemensionale arrays, maar ik kijk morgen verder ik ga nu slapie doen :P :z

  • SilentStorm
  • Registratie: November 2000
  • Laatst online: 18-03 14:45

SilentStorm

z.o.z

je zegt zelf dat ie de grafische context niet kan opvragen.
Niet alle Swing componenten hebben een grafische context. Misschien vraag je deze op bij het verkeerde component?

Ook zijn de graphics pas beschikbaar nadat de constructor 'af' is. Als je daarvoor al probeert deze te gebruiken heb je ook een nullpointer.

In dat geval moet je Graphics dus buiten de constructor specificeren. zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class EenOfAndereClass
{ private Graphics g;
  
  EenOfAndereClass()
  { [..]
  }

  setGraphics()
  { this.g = getGraphics();
  }

  myPaint()
  { g.drawString("Painted by \'EenOfAndereClass\'");
  }

  [..]
}

Localhost is where the heart is


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

wat staat er in je paint method van je belangrijkste frame?
waar roep je repaint() aan?

etc...

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op woensdag 19 juni 2002 01:16 schreef SilentStorm het volgende:
je zegt zelf dat ie de grafische context niet kan opvragen.
Niet alle Swing componenten hebben een grafische context. Misschien vraag je deze op bij het verkeerde component?

Ook zijn de graphics pas beschikbaar nadat de constructor 'af' is. Als je daarvoor al probeert deze te gebruiken heb je ook een nullpointer.

In dat geval moet je Graphics dus buiten de constructor specificeren. zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class EenOfAndereClass
{ private Graphics g;
  
  EenOfAndereClass()
  { [..]
  }

  setGraphics()
  { this.g = getGraphics();
  }

  myPaint()
  { g.drawString("Painted by \'EenOfAndereClass\'");
  }

  [..]
}
Waarom loopt iedereen toch met die graphics te klooien? Hij kan super eenvoudig een ander plaatje op die button zetten, en als hij daar nou een repaint achter aan slingerd, heb je dit hele geouwehoer niet nodig!!!

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 28-08 09:43
Misschien dat wat toelichting deze discussie wat duidelijker kan maken.

Het probleemgedeelte van het programma zit als volgt in elkaar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- Main
   |
   |- InterfaceGTP (JFrame)
         |
         |- menubar (JMenuBar)
         |- statusbalk (JPanel)
         |- totaalveld (Totaalveld extended op JPanel)
             |
             |- Paint van alles en nogwat
             |
             |
           Ronde
             |
          Speelveld
             |  
             |- Foto (JPanel)
                |
                |- Vakje x ~20 (JPanel)

InterfaceGTP maakt een instantie van Ronde aan een geeft het object totaalveld als parameter mee. Ronde maakt een instantie van Speelveld aan en geeft totaalveld weer als parameter mee.
Speelveld maakt een instantie van Foto aan en plaatst deze op het totaalveld. (De foto wordt niet lekker getekend)
Ook maakt Speelveld verschillende vakjes aan welke op Foto worden getekend. (Ze zijn echter niet te zien)

Als dit alles klaar is start speelveld een Timer dat de weergave van ieder vakje om te zoveel tijd verandert en weer opnieuw moet tekenen. Dit lukt dus niet.

Hier wat hoogtedieptepunten uit onze code:

Hier ziet je de constructor en wat methodes van Speelveld.
SetRonde wordt op het begin aangeroepen en SelectNextVakje door de timer die gaat lopen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
    public  Speelveld(int aantalspelers, int startSpeler, int startX, int startY, int breedte, int hoogte, Totaalveld veld) {
        
        this.veld = veld;
        aantalSpelers = aantalspelers;
        a = b = c = d = 0;
        spelerAanbeurt = startSpeler;
        fotoTijd = 0;
        fotoMaxTijd = 0;
        startXFoto = (startX + breedte - (horizontaal * breedteHokje)) / 2;
        startYFoto = 75;
        foto = new Foto(startXFoto,startYFoto);
        // De Foto wordt op het Totaalveld getekend
        veld.add(foto);
        vakjesTimer.start();
        display();  
    }

    public void setRonde(int ronde) {           
        // bla bla
        
        vakje = new Vakje[horizontaal][verticaal];
        
        for(int x = 0;  x < horizontaal; x++) {
            for(int y = 0;  y < verticaal; y++) {
                char random = randomChar();
                vakje[x][y] = new Vakje(x*breedteHokje+startXFoto,y*breedteHokje+startYFoto, ronde, random);
                // Het Vakje wordt op de foto getekend
                foto.add(vakje[x][y]);
            }
        }
        
        vakjesTimer.start();
    }

    private void selectNextVakje() {
    
        do {
            a++;
            if(a+1==horizontaal) {
                b++;
                a = 0;
            }
            if(b+1==verticaal)
                b=0;
        }
        while(!vakje[a][b].checkKanGeselecteerdWorden());
        
        vakje[c][d].setStatus("normaal");
        vakje[a][b].setStatus("geselecteerd");
        System.out.println("Vakje: "+c+" en "+d);
        c = a;
        d = b;
    }

    public void display() {
    
        Graphics g = veld.getGraphics();
        foto.display(g);
        if(drawVraag)
            vragen.display(g);
        for(int x = 0;  x < horizontaal; x++) {
            for(int y = 0;  y < verticaal; y++) {
                vakje[x][y].display(g);
            }
        }
        
    }

Hier een groot gedeelte van de Vakje-Klasse
De display die hier aangeroepen wordt krijgen we dus niet te zien.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public class Vakje extends JPanel {
    
    // bla bla
    
    public Vakje(int x, int y, int ronde, char beginLetter) {
        this.beginLetter = beginLetter;
        this.x = x;
        this.y = y;
        this.ronde = ronde;
        
        status = "normaal";
        
        // De displayer is en innerclasse, deze kan bij de variable van deze klasse maar doet ander werk (het weergeven van een hokje)
        displayer = new vakjeDisplay();
    }
        
    // GetChar methode  

    public void setStatus(String setStatus){
        if(!status.equals("speler1")) {
            this.status = setStatus;
        }
                
    }   
    
    public void display(Graphics g){
        
        displayer.paint(g); 
    }
    
    public boolean checkKanGeselecteerdWorden() {
        if(status.equals("normaal"))
            return true;
        return false;
    }
    
    public boolean updateTimer() {
        tijd--;
        if(tijd == 0) {
            tijd=25;
            return false;
        }
        return true;
    }
    
    class vakjeDisplay{
        
        public void paint(Graphics g){
            
            if(status.equals("geselecteerd")) {
                g.setColor(Color.green);
                g.fillRect(x,y,BREEDTE,HOOGTE);
                g.setColor(Color.black);
            }
            if(status.equals("speler1")) {
                g.setColor(Color.red);
                g.fillRect(x,y,BREEDTE,HOOGTE);
                g.setColor(Color.black);
            }
            
            g.drawRect(x,y,BREEDTE,HOOGTE);
            g.drawString(""+beginLetter, x + 15, y + 15);
            
            // bla bla
            
        }   
        
    }
}

Ik hoop dat iemand hier een flinke fout in ziet zitten :Y)

Verwijderd

Topicstarter
Is het misschien een idee om er ipv een JPanel een JButton van vakje te maken?? Of maakt dit nix uit?

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 28-08 09:43
:? Waarom wil je JButtons? Je hoeft er toch niet op te klikken? JPanels staat in dit geval volgens mij netter...

Ik ben het ook al niet eens met je manier van tekenen. Eerst de foto op 'iets' tekenen en dan de buttons eroverheen is niet echt net. Nu kan bijv. de foto niet refreshen zonder dat de vakjes verdwijnen.

Zoals ik het hierboven heb beschreven is toch veel netter? Je plaats een panel foto op het hoofdpanel. Op die panel foto plak je vervolgens weer een hele bunchload met panels die de vakjes voor gaan stellen.

Of is dat niet beter/netter/efficiënter? :?

Verwijderd

Topicstarter
Ja maar hij doet t niet. Nu iig nog minder als die deed. Lijkt me ook niet echt efficiënt.

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 28-08 09:43
Maar tis wel netter :)

Verwijderd

Topicstarter
Het belangrijkste vind ik dat het werkt hoe het werkt maakt me niet zoveel uit. Ik zit nu gewoon met iets wat helemaal geen vakjes meer tekent terwijl ie dat eerst wel deed. Lijkt me dat je eerst zorgt dat het werkt en dan eventueel nog een net programma ervan maakt.

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 28-08 09:43
Uhm.. de code zoals hij was.. Daar wil je toch hopelijk niet serieus mee gaan expirimenteren of wel?

Swing en AWT werd als cocktail gebruikt, alles door elkaar. En er zaten veel dingen in die gewoon niet kunnen. Zo was bijvoorbeelde de klasse foto extended op een JFrame.
Hoe wil je in GoTsnaam een JFrame op een JPanel laten tekenen. :? Niet echt netjus nee.

Misschien doet het programma nu op het eerste gezicht veel minder dan eerst het zit nu toch veel dichter bij hetgeen dat het moet worden. :)
De code en de structuur van de klasses steekt nu tenminste wat fatsoenlijk in elkaar en dan is het een stuk minder moeilijk om de code aan de praat te krijgen dan met het (NOFI) zooitje dat je hiervoor had.

[ *hint* ]
Misschien dat je een tweaker die er meer verstand van heeft eens O+ lief O+ aan kan kijken of hij/zij eens in de code wilt kijken.
[ / *hint* ]

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik heb hem al een goed eind de goeie kant opgestuurd. Het enigste dat hij zelf hoeft te maken is nog een panel met daarop een tableLayout of een GridLayout en meneer kan daarop alle boardItemButtons op plaatsen. Dit is echt de manier waarop je te werk moet gaan. En niet al je gui code samen laten klonteren met je logica van het spel. Dat is dus echt 2x niets. Je moet echt overstappen op MVC en dan ben je van dit geouwehoer af. En je moet gewoon het painten ed aan een componentje overlaten die al kan painten. (Dus een JLabel of een JButton ofzo (perfect voor board items)). Ik heb dit ook eens moeten maken voor vak: advanced database systems waar wat concurrency problemen moesten oplossen ed. Ik heb het op dezelfde manier gedaan als ik nu net heb beschreven.

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 28-08 09:43
Hmmz, ja ik weet verder zelf niets van Model View Controlling af. Toch ben ik van mening dat ALS je er gebruikt van gaat maken je wel moet voortbreiën op de door mij aangepaste code. Het is nu misschien wat lastig maar het gaat je echt een hoop problemen schelen in de komende tijd.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op woensdag 19 juni 2002 17:09 schreef Maxonic het volgende:
Hmmz, ja ik weet verder zelf niets van Model View Controlling af. Toch ben ik van mening dat ALS je er gebruikt van gaat maken je wel moet voortbreiën op de door mij aangepaste code. Het is nu misschien wat lastig maar het gaat je echt een hoop problemen schelen in de komende tijd.
tip: alles weggooien en opnieuw beginnen. Niet verder gaan met iets wat niet deugt en vaak kost het meer tijd en problemen om iets om te bouwen dan opnieuw te beginnen. Voor uitleg MVC zie mijn reply op deze pagina: http://forum.javahova.net/topic.php?id=526

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 28-08 09:43
Achja, er zitten maar 369 manuren in en het moet pas over een week af zijn ;)

De code deugt wel hoor, maar fouten die er inzitten moeten niet onderschat worden en direct aangepakt worden alsvorens verder te gaan.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik wens je er veel succes me, maar vergelijk het met een huis op drijfzand bouwen waarvan de balken zijn aangevreten door termieten en de stenen zo zacht zijn als boter. oja.. het cement hecht ook niet ;)

Verwijderd

Topicstarter
Dus als ik het nu allemaal goed begrijp wordt het zo:
JPanel Totaalveld maakt Ronde (ook een JPanel) aan deze maakt een Object Speelveld aan. Speelveld maakt een instantie van foto (JButton :?) aan. Vervolgens voegen we aan het Object foto de vakjes (ook JButtons) toe. Deze worden wel hertekend als ze veranderen?? Doen ze dit zelf of moet dat aangeroepen worden??

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 28-08 09:43
Totaalveld maakt geen Ronde aan, dat doet InterfaceGTP. Vervolgens wordt Totaalveld als parameter meegegeven aan ronde en speelveld zodat zij daarmee kunnen doen wat ze willen

Verwijderd

Ga nou gewoon over op MVC. Ik heb net weer een component klaar met MVC techniek.
Mijn huis was namelijk verdwenen in het drijfzand, zodat de termieten geen eten meer hadden :).

Als je een echte programmeur wil worden, zal je toch hieraan moeten.
Pagina: 1