Bonsoir,
J'ai le code suivant:
Code java : 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 public class AboutBox { private JFrame myFrame; private JLabel label; // private JPanel panneau; public AboutBox() { JFrame myFrame = new JFrame(); myFrame.setTitle("A propos..."); myFrame.setSize(600, 350); // myFrame.setPreferredSize(new Dimension(300, 200)); myFrame.setLocationRelativeTo(null); // myFrame.setDefaultCloseOperation(EXIT_ON_CLOSE); // myFrame.pack(); myFrame.setVisible(true); // printLogo(); ImageIcon icon = createImageIcon("logo2-007CC2.png", ""); this.label = new JLabel("dsfdqsfdfdsf", icon, JLabel.LEFT); myFrame.getContentPane().add(this.label); } }
J'instancie dans mon programme la classe AboutBox avec un new AboutBox().
Cela fonctionne. Sauf que si à la dernière ligne je mets this.myFrame.getContentPane().add(this.label); au lieu de myFrame.getContentPane().add(this.label); et bien ca plante complètement. Je n'arrive pas a comprendre pourquoi je ne peux pas metrte un "this". Une idée ? L'erreur est :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at msview.AboutBox.<init>(AboutBox.java:40)
at msview.MainJFrame$1.actionPerformed(MainJFrame.java:53)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6505)
etc..., il y a encore plein de lignes...
Autre question:
Initialement j'avais mis le code qui affiche le log dans une fonction printLogo(), comma ca:
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private void printLogo() { ImageIcon icon = createImageIcon("logo2-007CC2.png", ""); this.label = new JLabel("dsfdqsfdfdsf", icon, JLabel.LEFT); myFrame.getContentPane().add(this.label); }
Ce code mis dans le constructeur de AboutBox fonctionne parfaitement, mais lorsque il est mis dans printLogo() il ne fonctionne pas. Evidement j'appelle printLogo() dans le constructeur de AboutBox (mis en commentaire dans le premier extrait de code).
L'exception levée est :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at msview.AboutBox.printLogo(AboutBox.java:46)
at msview.AboutBox.<init>(AboutBox.java:37)
at msview.MainJFrame$1.actionPerformed(MainJFrame.java:53)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
etc..., il y a encore plein de lignes...
Pour moi c'est incompréhensible, c'est juste des copier/coller du code.
Volontairement, je n'ai pas voulut faire hériter ma classe AboutBox d'un JFrame et j'ai préféré utiliser un JFrame en tant que variable privé de ma classe. Ca ne doit pas être la le problème.
Merci.
Partager