Ik heb 3 klassen die extenden van de Canvas klasse en de paint() functie op de volgende manier implementeren:
Als ik een Table Object aanmaak in mijn MIDlet en daarna het Display zet mbv display.setCurrent(eenTabel) wordt er een tabel gepaint, dit werkt perfect. Ook het repainten werkt prima als ik repaint() aanroep op de volgende manier:
eenTabel.repaint();
Echter als ik probeer een 1 specifiek Cell Object te repainten werkt het niet omdat Graphics g in de paint() functie van de Cell klasse waarschijnlijk geen geldige/goede referentie is naar het scherm/screen van het MIDlet want er veranderd dus niets op het scherm (hij repaint iig niet datgene wat zichtbaar is op het scherm). Voorbeeld:
eenTabel.rows[1].cells[1].repaint();
Ik heb al geprobeerd een public Graphics Object in die klasse bij te houden met een referentie naar het Graphics Object uit de Table klasse, dit werkt echter ook niet
Heeft iemand een idee hoe ik het voor elkaar kan krijgen een specifiek Cell Object te repainten in plaats van een heel Table Object te moeten repainten?
code:
1
2
3
4
5
6
7
8
9
10
11
| Cell extends Canvas{
private int x;
private int y;
private String content;
//enige paint() die werkelijk iets tekent op het scherm
protected void paint(Graphics g){
g.drawString(content, x, y, g.BASELINE|g.HCENTER)
}
} |
code:
1
2
3
4
5
6
7
8
9
10
11
| Row extends Canvas{
private Cell[] cells;
//geeft alleen een referentie-naar-het-scherm door
protected void paint(Graphics g){
for(int i=0; i < cells.length; i++){
cells[i].paint(g);
}
}
} |
code:
1
2
3
4
5
6
7
8
9
10
11
| Table extends Canvas{
private Row[] rows;
//geeft alleen een referentie-naar-het-scherm door
protected void paint(Graphics g){
for(int i=0; i < rows.length; i++){
rows[i].paint(g);
}
}
} |
Als ik een Table Object aanmaak in mijn MIDlet en daarna het Display zet mbv display.setCurrent(eenTabel) wordt er een tabel gepaint, dit werkt perfect. Ook het repainten werkt prima als ik repaint() aanroep op de volgende manier:
eenTabel.repaint();
Echter als ik probeer een 1 specifiek Cell Object te repainten werkt het niet omdat Graphics g in de paint() functie van de Cell klasse waarschijnlijk geen geldige/goede referentie is naar het scherm/screen van het MIDlet want er veranderd dus niets op het scherm (hij repaint iig niet datgene wat zichtbaar is op het scherm). Voorbeeld:
eenTabel.rows[1].cells[1].repaint();
Ik heb al geprobeerd een public Graphics Object in die klasse bij te houden met een referentie naar het Graphics Object uit de Table klasse, dit werkt echter ook niet
Heeft iemand een idee hoe ik het voor elkaar kan krijgen een specifiek Cell Object te repainten in plaats van een heel Table Object te moeten repainten?