bonjour tout le monde,
je voudrais savoir comment un jdesktoppane peut se fermer lui meme??
Version imprimable
bonjour tout le monde,
je voudrais savoir comment un jdesktoppane peut se fermer lui meme??
Salut,
J'utilise assez peu le JDesktopPane, mais il me semble que ce n'est qu'un conteneur C'est la fenêtre qui contient le conteneur que tu ferme, et non le conteneur lui même.
mais comme tout objet,il peut être détruit??comment proceder alors??
Il est détruit par le garbage collector quand il n'est plus utilisé, en Java ce n'est pas toi qui détermine la destruction des objets.
Dis nous plutôt ce que tu veux faire avec ce JDesktopPane et pourquoi tu voudrais le "détruire".
Evite juste de garder des references inutile sur cet objet.
ok merci.
j'utlise ce jdesktoppane comme une fenetre fille qui s'affiche dans une fenetre mére de type jframe, pour affiché le jdestoppane,je l'ajoute au panel de la fenetre mére.
et je voudrais,suite a un événement donné pouvoir fermé ce jdesktoppane pour en ouvrir un autre.
Si j'ai bien compris...
Il suffit de supprimer le permier desktoppane du container, d'ajouter le nouveau, puis d'appeler la méthode revalidate() du container.
Exemple :
Code:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JPanel; public class MaFenetre extends JFrame { private MyJDesktopPane desktop = new MyJDesktopPane(); private JButton btn = new JButton("Change..."); private JPanel container; public static void main(String[] args) { MaFenetre f = new MaFenetre(); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public MaFenetre() { setDefaultCloseOperation(EXIT_ON_CLOSE); JInternalFrame iFrame = new JInternalFrame( "2", true, true, true, true); iFrame.setVisible(true); iFrame.setBounds(150, 150, 200, 100); desktop.add(iFrame); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { container.remove(desktop); desktop = new MyJDesktopPane(); container.add(desktop, BorderLayout.CENTER); container.revalidate(); } }); setPreferredSize(new Dimension(400, 400)); container = (JPanel) getContentPane(); container.setLayout(new BorderLayout()); container.add(btn, BorderLayout.NORTH); container.add(desktop, BorderLayout.CENTER); } private class MyJDesktopPane extends JDesktopPane { public MyJDesktopPane() { JInternalFrame iFrame = new JInternalFrame( "1", true, true, true, true); iFrame.setVisible(true); iFrame.setBounds(10, 10, 200, 100); add(iFrame); } } }
merci pour ta réponse.
je savais déja comment la fermer a partir d'un événement relatif a la fenêtre mère et la j'ai eu l'idée de mettre :
le panel qui doit contenir la fenetre fille en static, comme sa je peux y accéder de n'importe quelle fenetre fille et le fermer.
Code:
1
2
3 fenetremere.panel.removeall(); fenetremere.panel.repaint();