Fermeture d une jinternalframe

Résolu
sarassef Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 28 mai 2011 - 4 mai 2011 à 08:15
 Utilisateur anonyme - 11 mai 2011 à 18:25
Bonjour,

Apres avoir chercher sur le net,je ne trouve pas toujours une solution a mon probleme que je vais essayer de vous expliquer et qui certainement n est pas aussi galere pour vous.

J ai un menu avec et je veux qu a chaque fois que je clique sur un menu une jinternalframe s affiche et que l autre se desactive car j ai besoin d appeler une fonction a la fermeture de chaque jinternalframe et qui est propre a la jinternalframe.

Mon probleme est que le setVisible(false)/(true) me donne des erreurs et ne desactive pas la jinternalframe pour que le code de internalFrameDeactivated s execute.

SVP aidez moi a resoudre ce probleme.
Merci.

7 réponses

sarassef Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 28 mai 2011
11 mai 2011 à 16:41
juste pour tout autre ayant besoin d une solution en fait le probleme est que j utilise plusieurs JInternalframes alors qu il suffit d utiliser une seule et pour chaque actionperformed on fait le condition:
//f est mon jinternalframe
if(f!=null){
desktop.remove(f);//desktop est mon desktopane
f.setclosed(true);
}



et dans chaque classe on ajoute un jinternal listener internalframeclosed et on y mets ce qu on desire executer a la fermeture.

Voila,pour moi sa a marche et merci pour toutes vos suggestions.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 372
4 mai 2011 à 12:55
Tu peux ajouter à ta JInternalFrame un WindowListener avec la commande
addWindwowListener(new Fermeur())


Où la classe Fermeur peut être :
public class Fermeur implements WindowListener {

   public void windowOpened(WindowEvent e){

   }
   public void windowClosing(WindowEvent e){

   }
   public void windowClosed(WindowEvent e){

   }
   public void windowIconified(WindowEvent e){

   }
   public void windowDeinconified(WindowEvent e){

   }
   public void windowActivated(WindowEvent e){

   }
   public void windowDeactivated(WindowEvent e){

   }

}


Dans les fonction, tu pourras spécifier le comportement de ta fenêtre lorsqu'on la ferme (entre autres). Si tu as des soucis, jette un œil sur la doc de sun.
0
sarassef Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 28 mai 2011
4 mai 2011 à 13:47
je sais qu il y a cette methode mais le probleme c est que mes jinternalframes sont sans bordures ni boutons de fermetures et iconisation donc je dois le faire autrement et les setVisible(true) et false me donnent que des erreurs
0
sarassef Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 28 mai 2011
4 mai 2011 à 13:52
bon voila un peu ce que j ai fait et qui ne marche pas
public class index extends JFrame implements ActionListener{
    /**
 * 
 */
private static final long serialVersionUID = 1L;
//components
    JMenuBar index=new JMenuBar();
    JMenu cpt=new JMenu("Compte"); 
    JMenu clnt=new JMenu("Client"); 
    JMenuItem agnc=new JMenuItem("Agence"); 
    JMenuItem creer=new JMenuItem("Créer");JMenuItem creer2=new JMenuItem("Créer");
    JMenuItem consulter=new JMenuItem("Consulter");JMenuItem consulter2=new JMenuItem("Consulter");
    
    JDesktopPane desktop = new JDesktopPane();
    JInternalFrame cptcreer;
    JInternalFrame cptconsulter;
    JInternalFrame clntcreer;
    JInternalFrame clntconsulter;
    JInternalFrame agence;
    
    public index(String s){
    	setTitle(s);
    	setSize(700,400);
    	setLocationRelativeTo(null);
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	setJMenuBar(index);
    	index.add(cpt);index.add(clnt);index.add(agnc);
    	clnt.add(creer);clnt.add(consulter);
    	cpt.add(creer2);cpt.add(consulter2);
    	
    	
    	
    	creer.addActionListener(this);
    	creer2.addActionListener(this);
    	consulter.addActionListener(this);
    	consulter2.addActionListener(this);
    	agnc.addActionListener(this);
    	getContentPane().add(desktop);
        show();
     
    }
    
   public void actionPerformed(ActionEvent e){
   if(e.getSource()==creer){

  clntcreer = new creer_client(); 	          
          clntcreer.setSize(this.getSize());   
          clntcreer.setVisible(true); 
          desktop.add(clntcreer);    
          try{clntcreer.setSelected(true);}catch(Exception a){a.printStackTrace();}  
   }
   if(e.getSource()==consulter){
   fermer();
      clntconsulter = new consulter_client(); 	          
          clntconsulter.setSize(this.getSize());   
          clntconsulter.setVisible(true); 
          desktop.add(clntconsulter);    
          try{clntconsulter.setSelected(true);}catch(Exception a){a.printStackTrace();}  
   }
   if(e.getSource()==creer2){
   fermer();
      cptcreer = new Compte_Creer(); 	          
          cptcreer.setSize(this.getSize());   
          cptcreer.setVisible(true); 
          desktop.add(cptcreer);    
          try{cptcreer.setSelected(true);}catch(Exception a){a.printStackTrace();}  
        } 
   if(e.getSource()==consulter2){
   fermer();
      cptconsulter = new Compte_Consulter(); 	          
          cptconsulter.setSize(this.getSize());   
          cptconsulter.setVisible(true); 
          desktop.add(cptconsulter);    
          try{cptconsulter.setSelected(true);}catch(Exception a){a.printStackTrace();}  
        } 
   if(e.getSource()==agnc){
      fermer();
      agence = new agences(); 	          
          agnc.setSize(this.getSize());   
          agnc.setVisible(true); 
          desktop.add(agnc);    
          try{agnc.setSelected(true);}catch(Exception a){a.printStackTrace();}  
        } 
  
   }
   
   public void fermer(){
   if(agence.isVisible()){
   agence.setVisible(false);
   }
   if(clntcreer.isVisible()){
   clntcreer.setVisible(false));
   }
   if(clntconsulter.isVisible()){
   clntconsulter.setVisible(false);
   }
   if(cptcreer.isVisible()){
   cptcreer.dispose();
   }
   if(cptconsulter.isVisible()){
   cptconsulter.setVisible(false);
   }
   
   }
   }
    


Et dans chaque classe que j appelle il y a une methode internalFrameDeactivated pour appeler une fonction de sauvegarde de donnees.

???y a t il des suggestions???
0

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

Posez votre question
Utilisateur anonyme
4 mai 2011 à 21:16
J'ai l'impression que dans ton actionPerformed tu utilises le setSelected(true) sur ta JnternalFrame mais je pense que dans le même If tu devrais mettre toutes les autres à false avec setSelected


--
Pylouq (actuellement jongleur de clavier AZERTY et de clavier QWERTZ)
0
sarassef Messages postés 6 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 28 mai 2011
11 mai 2011 à 16:45
comment mettre le probleme resolu???:) dsl pour cette question mais je vois pas comment faire
0
Utilisateur anonyme
11 mai 2011 à 18:25
Clique sur Réponse acceptée qui est présent sur ton avant dernier message. C'est lui qui a la solution, donc c'est lui qui t'as aidé et t'as permis de résoudre le problème

--
Pylouq (actuellement jongleur de clavier AZERTY et de clavier QWERTZ)
0
Rejoignez-nous