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) :
Ceci fonctionne, et le rectangle est retracé lorsque le sous-menu disparaît.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 @Override public void paint(Graphics g) { super.paint(g); g.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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 @Override public void paint(Graphics g) { super.paint(g); this.getGraphics().drawRect(0, 0, 50, 50); }
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 :
Et mon autre classe raccourcie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
Mais ceci ne fonctionne pas non plus, le rectangle n'est pas rafraichie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
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.
Partager