Dessin sur JPanel et refresh
Salut,
je dessine sur un JPanel et j'ai un problème de repaint. Lorsque un sous-menu de la barre de menu apparaît puis qu'il disparaît, ce qui est dessiné en dessous du menu disparaît. Enfin, en fait ça dépend de la méthode que j'utilise.
J'ai une classe qui étend JPanel et je redéfinis paint(Graphics g) :
Code:
1 2 3 4 5
| @Override
public void paint(Graphics g) {
super.paint(g);
g.drawRect(0, 0, 50, 50);
} |
Ceci fonctionne, et le rectangle est retracé lorsque le sous-menu disparaît.
Code:
1 2 3 4 5
| @Override
public void paint(Graphics g) {
super.paint(g);
this.getGraphics().drawRect(0, 0, 50, 50);
} |
Ceci ne fonctionne pas, le rectangle est bien tracé mais la partie du rectangle qui est sous le menu n'est pas redessinée. Je ne comprends pas très bien pourquoi. J'imagine que les 2 Graphics sont différents mais d'où vient l'argument réel g lors d'un appel à cet méthode ?
Le problème final est que je veux pouvoir dessiner sur un JPanel depuis une méthode d'une autre classe qui serait appelé dans paint(Graphics g) du JPanel, ex. dans ma classe qui étends JPanel :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
public class DrawingJPanel extends JPanel {
private JPanelDrawer drawer;
@Override
public void paint(Graphics g) {
super.paint(g);
this.drawer.draw();
}
} |
Et mon autre classe raccourcie :
Code:
1 2 3 4 5 6 7 8 9 10
| public class JPanelDrawer extends Drawer {
// Classe qui étend le JPanel et redéfinit paint(Graphics g)
private DrawingJPanel drawingPanel;
public void draw() {
this.drawingPanel.getGraphics().drawRect(0, 0, 50, 50);
}
} |
Mais ceci ne fonctionne pas non plus, le rectangle n'est pas rafraichie.
Enfin bref, le but réellement final étant simplement de tracer sur un JPanel et que tout soit bien retracé même si un menu apparaît/disparaît, quelqu'un aurait-il une idée sur la question ?
En vous remerciant.