Fermer JInternalFrame

ririsuperstar - 12 mars 2013 à 13:32
 Utilisateur anonyme - 13 mars 2013 à 12:53
Bonjour, je suis débutant en java.
J'ai écrit un code qui ouvre une fenêtre interne dans un desktopPane, en cliquant sur un bouton, mais je ne trouve pas comment faire pour fermer cette fenêtre qui vient de s'ouvrir si on clique sur un autre bouton ou une deuxième fois sur le bouton ayant ouvert la fenêtre interne.
Voici la portion de code :

JButton bouton1 = new JButton("Iso");
bouton1.setBounds(0, 0, 61, 56);
bouton1.setBackground(SystemColor.menu);
bouton1.setActionCommand("Iso");
bouton1.addActionListener(this);
fenetre1.add(bouton1);

JButton bouton2 = new JButton("Gravi");
bouton2.setBounds(0, 55, 61, 56);
bouton2.setBackground(SystemColor.menu);
bouton2.setActionCommand("Gravi");
bouton2.addActionListener(this);
fenetre1.add(bouton2);

menu2.setBorder(UIManager.getBorder("CheckBox.border"));
menu2.setBackground(SystemColor.menu);
menu2.setBounds(0, 0, 62, 592);
fenetre1.add(menu2);
desktopPane.setBackground(Color.LIGHT_GRAY);
desktopPane.setBounds(61, 21, 947, 571);
fenetre1.add(desktopPane);

}

public void actionPerformed(ActionEvent ouvrirFenetreInterne) {
if ("Iso".equals(ouvrirFenetreInterne.getActionCommand())) {
createFrame();
}
}

public void createFrame(){
Isostasie frame = new Isostasie();
frame.setVisible(true);
desktopPane.add(frame);
}

5 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
12 mars 2013 à 14:11
Salut,

Il te suffit d'appeler la méthode dispose() sur la JInternalFrame.
0
ririsuperstar
12 mars 2013 à 16:13
J'ai essayé ça, mais ça ferme la jframe:

public void actionPerformed(ActionEvent ouvrirFenetreInterne) {
if ("Iso".equals(ouvrirFenetreInterne.getActionCommand())) {
createFrame();
} else {
dispose();
}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 mars 2013 à 08:03
Je pense que tu es dans la classe qui étend JFrame. C'est sur la JINternalFrame que tu as ouvert qu'il faut faire le dispose. Cette fenêtre que tu créés dans createFrame()
0
ririsuperstar
13 mars 2013 à 12:35
Je ne vois pas comment faire.
Voilà mon code principal et celui de la jinternalframe en question:

package isostasie;


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComponent;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;


import isostasie.Isostasie;

public class Interface extends JFrame implements ActionListener{

private JPanel fenetre1;
private final JList menu2 = new JList();
private final JDesktopPane desktopPane = new JDesktopPane();

/**
 * Launch the application.
 */
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Interface frame = new Interface();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
 * Create the frame.
 */
public Interface() {
setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\SPU.png"));
setTitle("SPU 1.0");
setBounds(100, 100, 1024, 630);
fenetre1 = new JPanel();
setContentPane(fenetre1);
fenetre1.setLayout(null);

JMenuBar menu1 = new JMenuBar();
menu1.setBackground(SystemColor.menu);
menu1.setBounds(61, 0, 1008, 21);
fenetre1.add(menu1);

JMenu onglet1 = new JMenu("   Fichier");
onglet1.setBorder(UIManager.getBorder("RadioButton.border"));
menu1.add(onglet1);
onglet1.setPreferredSize(new Dimension(84, 22));
onglet1.setFont(new Font("Comic Sans MS", Font.PLAIN, 14));

JMenu onglet1_1 = new JMenu("Nouveau projet");
onglet1_1.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\Dossier-Ecran.png"));
onglet1.add(onglet1_1);
onglet1_1.setPreferredSize(new Dimension(136, 31));
onglet1_1.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));

JMenuItem onglet1_1_1 = new JMenuItem("Isostasie");
onglet1_1_1.setPreferredSize(new Dimension(105, 22));
onglet1_1_1.setSelected(true);
onglet1_1_1.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
onglet1_1.add(onglet1_1_1);

JMenuItem onglet1_1_2 = new JMenuItem("Gravim\u00E9trie");
onglet1_1_2.setSelected(true);
onglet1_1_2.setPreferredSize(new Dimension(105, 22));
onglet1_1_2.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
onglet1_1.add(onglet1_1_2);

JMenuItem onglet1_1_3 = new JMenuItem("St\u00E9r\u00E9o");
onglet1_1_3.setSelected(true);
onglet1_1_3.setPreferredSize(new Dimension(105, 22));
onglet1_1_3.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
onglet1_1.add(onglet1_1_3);

JMenuItem onglet1_2 = new JMenuItem("Ouvrir");
onglet1_2.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\Load.png"));
onglet1_2.setPreferredSize(new Dimension(136, 31));
onglet1_2.setRolloverEnabled(true);
onglet1.add(onglet1_2);

JMenuItem onglet1_3 = new JMenuItem("Enregistrer");
onglet1_3.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\Save_mini.png"));
onglet1_3.setRolloverEnabled(true);
onglet1_3.setPreferredSize(new Dimension(136, 31));
onglet1_3.setActionCommand("Save");
onglet1_3.addActionListener(this);
onglet1.add(onglet1_3);

JMenuItem onglet1_4 = new JMenuItem("Imprimer");
onglet1_4.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\Print_mini.png"));
onglet1_4.setRolloverEnabled(true);
onglet1_4.setPreferredSize(new Dimension(136, 31));
onglet1.add(onglet1_4);

JMenuItem onglet1_5 = new JMenuItem("Quitter");
onglet1_5.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\Exit.png"));
onglet1_5.setRolloverEnabled(true);
onglet1_5.setPreferredSize(new Dimension(136, 31));
onglet1_5.setActionCommand("Quit");
onglet1_5.addActionListener(this);
onglet1.add(onglet1_5);

JMenu onglet2 = new JMenu("   Edition");
onglet2.setPreferredSize(new Dimension(84, 22));
onglet2.setFont(new Font("Comic Sans MS", Font.PLAIN, 14));
onglet2.setBorder(UIManager.getBorder("RadioButton.border"));
menu1.add(onglet2);

JMenuItem onglet2_1 = new JMenuItem("Vers l'arri\u00E8re");
onglet2_1.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\Back.png"));
onglet2_1.setRolloverEnabled(true);
onglet2_1.setPreferredSize(new Dimension(120, 31));
onglet2.add(onglet2_1);

JMenuItem onglet2_2 = new JMenuItem("Vers l'avant");
onglet2_2.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\Next.png"));
onglet2_2.setRolloverEnabled(true);
onglet2_2.setPreferredSize(new Dimension(120, 31));
onglet2.add(onglet2_2);

JMenuItem onglet2_3 = new JMenuItem("Copier");
onglet2_3.setRolloverEnabled(true);
onglet2_3.setPreferredSize(new Dimension(120, 31));
onglet2.add(onglet2_3);

JMenuItem onglet2_4 = new JMenuItem("Coller");
onglet2_4.setRolloverEnabled(true);
onglet2_4.setPreferredSize(new Dimension(120, 31));
onglet2.add(onglet2_4);

JMenu onglet3 = new JMenu("     Aide");
onglet3.setPreferredSize(new Dimension(84, 22));
onglet3.setFont(new Font("Comic Sans MS", Font.PLAIN, 14));
onglet3.setBorder(UIManager.getBorder("RadioButton.border"));
menu1.add(onglet3);

JMenuItem onglet3_1 = new JMenuItem("A propos de...");
onglet3_1.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\Info_mini.png"));
onglet3_1.setRolloverEnabled(true);
onglet3_1.setPreferredSize(new Dimension(125, 31));
onglet3.add(onglet3_1);

JMenuItem onglet3_2 = new JMenuItem("Mode d'emploi");
onglet3_2.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\0d4aafd1_mini.png"));
onglet3_2.setRolloverEnabled(true);
onglet3_2.setPreferredSize(new Dimension(125, 31));
onglet3.add(onglet3_2);

JMenuItem onglet3_3 = new JMenuItem("Contact");
onglet3_3.setIcon(new ImageIcon("C:\\Program Files (x86)\\eclipse\\workspace\\perso\\Email.png"));
onglet3_3.setRolloverEnabled(true);
onglet3_3.setPreferredSize(new Dimension(125, 31));
onglet3.add(onglet3_3);

JButton bouton1 = new JButton("Iso");
bouton1.setFont(new Font("Tahoma", Font.PLAIN, 11));
bouton1.setBounds(0, 0, 61, 56);
bouton1.setBackground(SystemColor.menu);
bouton1.setActionCommand("Iso");
bouton1.addActionListener(this);
fenetre1.add(bouton1);

JButton bouton2 = new JButton("");
bouton2.setFont(new Font("Tahoma", Font.PLAIN, 11));
bouton2.setBounds(0, 54, 61, 56);
bouton2.setBackground(SystemColor.menu);
fenetre1.add(bouton2);

JButton bouton3 = new JButton("");
bouton3.setFont(new Font("Tahoma", Font.PLAIN, 11));
bouton3.setBackground(SystemColor.menu);
bouton3.setActionCommand("");
bouton3.setBounds(0, 108, 61, 56);
fenetre1.add(bouton3);

JButton bouton4 = new JButton("");
bouton4.setFont(new Font("Tahoma", Font.PLAIN, 11));
bouton4.setBackground(SystemColor.menu);
bouton4.setActionCommand("");
bouton4.setBounds(0, 162, 61, 56);
fenetre1.add(bouton4);

menu2.setBorder(UIManager.getBorder("CheckBox.border"));
menu2.setBackground(SystemColor.menu);
menu2.setBounds(0, 0, 62, 592);
fenetre1.add(menu2);
desktopPane.setBackground(Color.LIGHT_GRAY);
desktopPane.setBounds(61, 21, 947, 571);
fenetre1.add(desktopPane);

}

public void actionPerformed(ActionEvent ouvrirFenetreInterne) {
        if ("Iso".equals(ouvrirFenetreInterne.getActionCommand())) {
            createFrame();
        }   
        if ("Quit".equals(ouvrirFenetreInterne.getActionCommand())) {
            System.exit(0);
        }
}

public void createFrame(){
    	Isostasie frame = new Isostasie();
        frame.setVisible(true);
        desktopPane.add(frame);
       }
}






package isostasie;

import javax.swing.JInternalFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JDesktopPane;
import java.awt.Color;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.Font;

public class Isostasie extends JInternalFrame {
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;

protected Isostasie() {
setIconifiable(true);
setFrameIcon(null);
setTitle("Isostasie");
setClosable(true);
setBounds(0, 0, 947, 571);

JDesktopPane desktopPane = new JDesktopPane();
desktopPane.setBackground(Color.LIGHT_GRAY);

JDesktopPane desktopPane_1 = new JDesktopPane();
desktopPane_1.setBackground(Color.LIGHT_GRAY);

JDesktopPane desktopPane_2 = new JDesktopPane();
desktopPane_2.setBackground(Color.LIGHT_GRAY);
GroupLayout groupLayout = new GroupLayout(getContentPane());
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addComponent(desktopPane_1, GroupLayout.DEFAULT_SIZE, 931, Short.MAX_VALUE)
.addGroup(groupLayout.createSequentialGroup()
.addComponent(desktopPane, GroupLayout.PREFERRED_SIZE, 248, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(desktopPane_2, GroupLayout.DEFAULT_SIZE, 677, Short.MAX_VALUE))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addComponent(desktopPane_2)
.addComponent(desktopPane, GroupLayout.PREFERRED_SIZE, 120, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(desktopPane_1, GroupLayout.DEFAULT_SIZE, 416, Short.MAX_VALUE))
);

JLabel lblNewLabel = new JLabel("Nombre de colonnes");
lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel.setBounds(10, 14, 107, 14);
desktopPane.add(lblNewLabel);

textField = new JTextField();
textField.setBounds(119, 11, 46, 20);
desktopPane.add(textField);
textField.setColumns(10);

JLabel lblNewLabel_1 = new JLabel("Profondeur de compensation");
lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_1.setBounds(10, 39, 145, 14);
desktopPane.add(lblNewLabel_1);

textField_1 = new JTextField();
textField_1.setBounds(165, 36, 72, 20);
desktopPane.add(textField_1);
textField_1.setColumns(10);

JLabel lblNewLabel_2 = new JLabel("Densit\u00E9 cro\u00FBte");
lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_2.setBounds(10, 64, 80, 14);
desktopPane.add(lblNewLabel_2);

textField_2 = new JTextField();
textField_2.setBounds(102, 61, 72, 20);
desktopPane.add(textField_2);
textField_2.setColumns(10);

JLabel lblNewLabel_3 = new JLabel("Densit\u00E9 lithosph\u00E8re");
lblNewLabel_3.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_3.setBounds(10, 89, 98, 14);
desktopPane.add(lblNewLabel_3);

textField_3 = new JTextField();
textField_3.setBounds(119, 86, 72, 20);
desktopPane.add(textField_3);
textField_3.setColumns(10);
getContentPane().setLayout(groupLayout);

}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
13 mars 2013 à 12:53
C'est sur votre instance de la classe Isostasie que vous devez appeler la méthode dispose().























T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Rejoignez-nous