Bonjour,
Je souhaite faire un dessin dans un JPanel mais ce dernier ne s'affiche pas.
En fait j'essaie d'appeler la méthode paint() depuis le panneau (ligne 20) mais si je passe en argument "Graphics g" (graphics cannot be resolved to a variable) ou "new Grahics()" (Graphics cannot be resolved to a type) rien n'est accepté par la JVM (ou par eclipse ...). Le seul argument accepté est getGraphics() mais celui-ci renvoie un NULL et donc cela déclenche une exception lors du lancement du programme ....
Du coup, je ne sais pas comment afficher mes dessins dans le JPanel.
Voici le code du panneau :
et le code de la classe où le dessin se situe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class PanneauDes extends JPanel { public PanneauDes() { super(new FlowLayout()); DessinDes dd = new DessinDes(); dd.setBackground(Color.RED); dd.setPreferredSize(new Dimension(100, 100)); dd.paint(new Graphics()); } }
et la classe Fenetre depuis laquelle j'ajoute le panneau dans la fenetre (à la ligne 20) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class DessinDes extends JPanel { public DessinDes() { } @Override public void paint(Graphics g) { super.paint(g); g.setColor(Color.RED); g.fillRect(10,10,80,80); g.setColor(Color.BLUE); g.fillOval(150,50,80,80); } }
Je vous remercie pour votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class Fenetre extends JFrame{ public Fenetre() { super("Jeu de dés"); WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; addWindowListener(l); this.setExtendedState(JFrame.MAXIMIZED_BOTH); this.setVisible(true); JPanel panneau = new JPanel(new BorderLayout()); PanneauJoueurs pj = new PanneauJoueurs(); PanneauCommandes pc = new PanneauCommandes(); PanneauScore ps = new PanneauScore(); PanneauDes pd = new PanneauDes(); panneau.add(ps, BorderLayout.EAST); panneau.add(pj, BorderLayout.NORTH); panneau.add(pd, BorderLayout.CENTER); panneau.add(pc, BorderLayout.SOUTH); this.setContentPane(panneau); } }
Partager