bonjour tout le monde,
je voudrais savoir comment un jdesktoppane peut se fermer lui meme??








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.
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook








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 : 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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 fenetremere.panel.removeall(); fenetremere.panel.repaint();
Partager