Bonjour , alors mon soucis et que j'aimerais afficher une forme ovale a la suite d'un clic sur un boutton , mais quand j'exécute mon programme (qui est en faite une Applet s'exécutant de la classe Environnement, et qui donc n'a pas besoin de main()) cela me crée des exceptions.
Voici mes différentes classes:
1er classe:
2e Classe:
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
30 import java.applet.*; import java.awt.*; public class Environnement extends Applet { static Graphics g; static Maframe f = new Maframe(g); static MonApplet a = new MonApplet(); public void paint(Graphics g) { super.init(); super.paint(g); resize(400,500); a.paint(g); } static public void paint2() { a.paint2(g); } }
3e Classe:
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 import java.awt.*; public class MonApplet extends Canvas { public void paint(Graphics g) { super.paint(g); g.setColor(Color.black); g.drawOval(30,150,20,20); } public void paint2(Graphics g) { g.setColor(Color.black); g.fillOval(60,150,20,20); repaint(); } }
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 import java.awt.*; import java.awt.event.*; public class Maframe extends Frame implements ActionListener{ public Maframe( Graphics g) { super(); Button b1=new Button("Valider"); // Validation du choix des couleurs b1.addActionListener(this); add(b1); show(); } public void actionPerformed (ActionEvent evt) { String boutton=evt.getActionCommand(); if (boutton=="Valider") { Environnement.paint2(); } } }
Les exceptions que j'obtient lors du clic sur le boutton sont:
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at MonApplet.paint2(MonApplet.java:14)
at Environnement.paint2(Environnement.java:23)
at Maframe.actionPerformed(Maframe.java:20)
at java.awt.Button.processActionEvent(Button.java:388)
at java.awt.Button.processEvent(Button.java:356)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Ce que je ne comprend pas , c'est que si je demande a afficher quelque chose a l'écran par l'intémédiaire de System.out.println(".."); lors d'un clic sur le boutton cela s'affiche , donc le programme détecte bien l'événement sur ce boutton mais refuse donc d'afficher une seconde forme ovale , j'en déduis donc que j'ai dus mal initialiser la variable g (celle qui est utiliser dans la méthode paint2 de ma classe MonApplet) et que le programme ne comprend alors peu étre pas que je veux utiliser toujours la méme variable g ...
Des idées ???
Merci d'avance
Partager