IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

ouvrir une seule JInternalFrame


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Par défaut ouvrir une seule JInternalFrame
    Bonjour,

    J'ai une application qui m'ouvre un JInternalFrame dès que je clique sur le bouton nouveau. Cependant, si je clique sur le bouton nouveau et qu'une JInternalFrame existe déjà je voudrais que celle ci se ferme et cède la place à la nouvelle JInternalFrame.

    Exemple :
    Dans mon JInternalFrame j'ai un champ texte, j'y saisis des éléments, si je clique sur le bouton nouveau, un nouveau JInternalFrame doit apparaitre et l'ancien doit être supprimé.

    J'ai déjà testé avec les méthodes dispose() et setVisible() mais cela ne fonctionne pas correctement. J'ai aussi essayé d'instancier à nouveau ma JInternalFrame mais sans succès, si je clique sur nouveau il y a toujours une nouvelle fenêtre qui s'ouvre et l'ancienne fenêtre reste également ouverte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    desktop = new JDesktopPane();
    JInternalFrame myJInternalFrame = new JInternalFrame();
    desktop.add(myJInternalFrame);
    myJInternalFrame .setVisible(true);

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Il suffit de disposer d'une référence de ta JInternalFrame. Avant de créer une nouvelle JInternalFrame, tu fait un dispose() sur la précédente.

    Voici un ch'ti exemple (vite fait).
    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
    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 Test {
     
    	static JInternalFrame myJInternalFrame;
    	static JDesktopPane desktop = new JDesktopPane();
    	static int id;
     
    	public static void main(String[] args) {
    		JFrame frame = new JFrame();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		JPanel panel = new JPanel();
     
    		JButton btn = new JButton("add");
    		btn.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				addNew();			
    			}			
    		});
     
    		desktop.setPreferredSize(new Dimension(200,200));
     
    		panel.add(desktop);
    		panel.add(btn);
     
    		frame.setContentPane(panel);
     
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    	private static void addNew() {
    		if (myJInternalFrame != null) {
    			myJInternalFrame.dispose();
    		}
    		id++;
    		myJInternalFrame = new JInternalFrame("frame "+id);
    		myJInternalFrame.setBounds(0,0,100,100);
    		desktop.add(myJInternalFrame);
    		myJInternalFrame .setVisible(true);
    		desktop.revalidate();
    	}
     
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Par défaut
    Merci beaucoup visiwi, ça fonctionne bien maintenant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir une seule session
    Par yasstunisien dans le forum Administration
    Réponses: 1
    Dernier message: 30/06/2011, 09h12
  2. Ouvrir une seule fenêtre interne à la fois
    Par adel_adl dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 06/12/2010, 12h44
  3. Ouvrir une seule fenetre à la fois
    Par mz_del_ga dans le forum C#
    Réponses: 4
    Dernier message: 14/04/2009, 10h07
  4. [Cookies] Ouvrir une seule session
    Par rinuom99 dans le forum Langage
    Réponses: 12
    Dernier message: 21/11/2008, 12h11
  5. [SimpleXML] Ouvrir une seule fois un fichier xml
    Par persia dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 04/01/2008, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo