Bonjour à tous,
j'ai vu qu'il y avait de nombreux sujet sur cette question mais je n'ai pas trouvé mon bonheur en cherchant sur le forum.
Je débute en java et je rencontre un problème.
Mon application comporte une fenêtre principale ainsi qu'une deuxième qui est ouverte lors d'un clic sur un bouton de la fenêtre principale. Je cherche à fermer la deuxième lors du clic sur un bouton situé sur celle-ci.
je code sous eclipse et j'obtiens une erreur sur le scEframe.dispose();
je ne comprends pas pourquoi.
voici le code correspondant (je vous mets, la classe de la fenêtre principale, la classe correspondant au bouton qui lance la deuxième frame, la classe de la deuxième frame et la classe du bouton de fermeture).
au passage, si vous relevez de grosses bêtises, vous pouvez toujours le dire, je prends les conseils dans la mesure où ils sont constructifs !
Console.java (fenetre principale)
SaveSceneAction.java
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
31
32
33
34
35
36
37
38
39
40 public class Console extends javax.swing.JFrame { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { Console prframe= new Console(); prframe.setLocationRelativeTo(null); prframe.setVisible(true); prframe.setTitle("Console DMX"); } }); } public Console() { super(); initGUI(); } private void initGUI() { try { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); { jDesktopPane1 = new JDesktopPane(); getContentPane().add(jDesktopPane1, BorderLayout.CENTER); GridBagLayout jDesktopPane1Layout = new GridBagLayout(); jDesktopPane1Layout.columnWidths = new int[] {200, 7, 200, 7, 60, 7, 40, 7, 200, 7, 20, 7}; jDesktopPane1Layout.rowHeights = new int[] {45, 20, 61, 40, 90, 90, 90, 90, 90, 90}; jDesktopPane1Layout.columnWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0}; jDesktopPane1Layout.rowWeights = new double[] {0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; jDesktopPane1.setLayout(jDesktopPane1Layout); jDesktopPane1.setBackground(new java.awt.Color(0,0,0)); jDesktopPane1.setPreferredSize(new java.awt.Dimension(1008, 732)); /*...*/ { savescene = new JButton(new SaveSceneAction("<html>Enregistrer<br/>Scène</html>")); jDesktopPane1.add(savescene, new GridBagConstraints(8, 5, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); savescene.setFont(new java.awt.Font("Arial",0,16)); } /*...*/ }
SceneEditor.java (la deuxieme fenetre)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class SaveSceneAction extends AbstractAction { public SaveSceneAction(String texte){ super(texte); } public void actionPerformed(ActionEvent e) { SceneEditor.main(); System.out.println("Lancement Enregistrement de scène"); } }
QuitSceneEditor.java
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
31
32
33
34
35
36
37 public class SceneEditor extends javax.swing.JFrame { public static void main() { SwingUtilities.invokeLater(new Runnable() { public void run() { SceneEditor scEframe = new SceneEditor(); scEframe.setLocationRelativeTo(null); scEframe.setVisible(true); scEframe.setTitle("Editeur de scènes"); } }); } public SceneEditor() { super(); initGUI(); } private void initGUI() { try { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); { jDesktopPane1 = new JDesktopPane(); getContentPane().add(jDesktopPane1, BorderLayout.CENTER); GridBagLayout jDesktopPane1Layout = new GridBagLayout(); jDesktopPane1Layout.columnWidths = new int[] {7, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 7, 7, 7}; jDesktopPane1Layout.rowHeights = new int[] {7, 20, 20, 20, 20, 20, 20, 20, 20, 7, 7, 7}; jDesktopPane1Layout.columnWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}; jDesktopPane1Layout.rowWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1}; jDesktopPane1.setLayout(jDesktopPane1Layout); /*...*/ { quitE = new JButton(new QuitSceneEditor("Terminer")); jDesktopPane1.add(quitE, new GridBagConstraints(11, 11, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); quitE.setFont(new java.awt.Font("Arial",0,18)); } /*....*/ }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class QuitSceneEditor extends AbstractAction { public QuitSceneEditor(String texte){ super(texte); } public void actionPerformed(ActionEvent e) { Component dialog = null; int option = JOptionPane.showConfirmDialog(dialog, "Voulez-vous vraiment quitter l'éditeur de scènes ?", "Confirmation", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null); if (option == JOptionPane.YES_OPTION) { scEframe.dispose(); } } }
Partager