Problème JDesktopPane, JInternalFrame [Résolu]

cs_dragchm 3 Messages postés dimanche 8 janvier 2006Date d'inscription 21 octobre 2008 Dernière intervention - 14 oct. 2008 à 16:08 - Dernière réponse : cs_dragchm 3 Messages postés dimanche 8 janvier 2006Date d'inscription 21 octobre 2008 Dernière intervention
- 15 oct. 2008 à 18:46
Salut tout le monde voila mon problème j’ai crée un jFrame ou j’affiche plusieurs JInternalFrame dans l’une de JInternalFrame (J1) j’ai crée un jbutton, quant je click sure ce button je vue qu’une autre JInternalFrame (J2) s’affiche mais le problème c’est que
Le JInternalFrame (J2) s’affiche à l’intérieur de JInternalFrame (J1) et non pas à l’intérieur de JForm
SVP si quelqu'un a une idée me la propose, je suis debutante en java et j'ai vraiment besoin de votre aide .
merci d'avance
voici le code que j’ai écrit

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
privatevoid jButton2ActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:
  
 
    A= new JDesktopPane();
            setContentPane(A);
        
           L = new J2();
        
           A.add(L);
        try{
 
 
            L.setSelected(true);
        }catch(PropertyVetoException ex){
 
        }
            L.setLocation(10, 10);
           
           L.setVisible(true);
           
}
 
 
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention - 15 oct. 2008 à 08:17
3
Merci
re,

Quand tu fais m = new IUMenu() tu rajoutes un un JDesktopPane, si tu avais rajouté un m.setVisible(true) tu aurais bien vu les deux fenêtres.

En fait il faut passer ta fenetre en paramètre du constructeur :

au lieu de faire : e = new IUEmploye();tu fais : e new IUEmploye(this) ou bien e new IUEmploye(IUMenu.this) (ça dépend de ton code)

et donc ta classe :

import javax.swing.JDesktopPane;
 
publicclass IUEmploye extends javax.swing.JInternalFrame{
 
    JDesktopPane A;
     Detail L;
 
  public IUEmploye (){
   try{
            initComponents();
    }
 
catch(SQLException ex){
            System.out.println(ex.getMessage());
        }
 
                   }
....
 
privatevoid jButton2ActionPerformed(java.awt.event.ActionEvent evt){                                        
// TODO add your handling code here:
  
  
 
    m=new IUMenu();
         
        
           L = new Detail ();
         m.d.add(L);
                 try{
 
 
            L.setSelected(true);
        }
catch(PropertyVetoException ex){
            Logger.getLogger(IUMenu.class.getName()).log(Level.SEVERE, null, ex);
        }
            L.setLocation(20, 10);
            L.setVisible(true);
        
           
}  
...
}

devient :

import javax.swing.JDesktopPane;
 
publicclass IUEmploye extends javax.swing.JInternalFrame{
 
   IUMenu menu;
     Detail L;
 
  public IUEmploye (IUMenu menu){
     this.menu = menu;
   try{
            initComponents();
    }
 
catch(SQLException ex){
            System.out.println(ex.getMessage());
        }
 
                   }
....
 
privatevoid jButton2ActionPerformed(java.awt.event.ActionEvent evt){                                        
// TODO add your handling code here:
        
           L = new Detail ();
         menu.d.add(L);
                 try{
 
 
            L.setSelected(true);
        }
catch(PropertyVetoException ex){
            Logger.getLogger(IUMenu.class.getName()).log(Level.SEVERE, null, ex);
        }
            L.setLocation(20, 10);
            L.setVisible(true);
        
           
}  

}

Merci cs_jojolemariole 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_jojolemariole
cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention - 14 oct. 2008 à 18:23
0
Merci
salut,

Tu ne dois pas créer un autre JDesktopPane dans ton action. Il faut que tu passe en paramètre le JDesktopPane initialement crée à ta première JInternalFrame.

public class MaJInternalFrame {

   private JDesktopPane parent;
   [...]

   public MaJInternalFrame(JDesktopPane parent){
      this.parent = parent;
      [...]
   }

privatevoid jButton2ActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:

           L = new J2();
        
           parent.add(L);
        try{
 
 
            L.setSelected(true);
        }catch(PropertyVetoException ex){
 
        }
            L.setLocation(10, 10);
           
           L.setVisible(true);
           
}

}
Commenter la réponse de cs_jojolemariole
cs_dragchm 3 Messages postés dimanche 8 janvier 2006Date d'inscription 21 octobre 2008 Dernière intervention - 14 oct. 2008 à 18:47
0
Merci
je vous envois une parti du code de la classe ou j’ai déclare le JDesktopPane ainsi   que la class ou il ya le Jbuton pour me dire ce que je doit faire




1/ CLASS IUMenu
<!-- BEGIN TEMPLATE: bbcode_code -->





Code :
import java.beans.PropertyVetoException;
import java.sql.SQLException;
import javax.swing.JDesktopPane;
 
publicclass IUMenu extends javax.swing.JFrame{
 
  
    JDesktopPane d;
    IUEmploye e;
...
public IUMenu(){
        initComponents();
         d= new JDesktopPane();
         setContentPane(d);
     
    }
...
privatevoid jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt){                                          
       
 
            e = new IUEmploye();
       
d.add(e);
        try{
 
            e.setSelected(true);
        }catch(PropertyVetoException ex){
            Logger.getLogger(IUMenu.class.getName()).log(Level.SEVERE, null, ex);
        }
            e.setLocation(10, 10);
            e.setVisible(true);
           
         
}                                         
 
....
}
 
2/CLASS IUEmploye

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
import javax.swing.JDesktopPane;
 
publicclass IUEmploye extends javax.swing.JInternalFrame{
 
    JDesktopPane A;
     Detail L;
 
  public IUEmploye (){
   try{
            initComponents();
    }
 
catch(SQLException ex){
            System.out.println(ex.getMessage());
        }
 
                   }
....
 
privatevoid jButton2ActionPerformed(java.awt.event.ActionEvent evt){                                        
// TODO add your handling code here:
  
  
    A= new JDesktopPane();
 
           setContentPane(A);
        
           L = new Detail ();
     
           A.add(L);
        try{
 
             L.setSelected(true);
 
        }catch(PropertyVetoException ex){
                  }
            L.setLocation(20, 10);
            L.setVisible(true);
                     
}  
...
}

j’ai essayer cette Solution Pour ne pas ajouter un nouveau JDesktopPane mais ca marche pas

<!-- BEGIN TEMPLATE: bbcode_code -->privatevoid jButton2ActionPerformed(java.awt.event.ActionEvent evt){                                        
// TODO add your handling code here:
  
  
 
    m=new IUMenu();
         
        
           L = new Detail ();
         m.d.add(L);
                 try{
 
 
            L.setSelected(true);
        }
catch(PropertyVetoException ex){
            Logger.getLogger(IUMenu.class.getName()).log(Level.SEVERE, null, ex);
        }
            L.setLocation(20, 10);
            L.setVisible(true);
        
           
}   
 
 
Commenter la réponse de cs_dragchm
cs_dragchm 3 Messages postés dimanche 8 janvier 2006Date d'inscription 21 octobre 2008 Dernière intervention - 15 oct. 2008 à 18:46
0
Merci
 

Oui  ca marche  merci pour votre aide <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>





Actuellement Si Je vue faire l’inverse, a partir d’un button « B2» qui se trouve à  JInternalFrame « Detail »  je vue revenir  à JInternalFrame « IUEmploye » 





j'ai essayer cette Solution mais j’ai eu cette erreur
















 









Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException













        at projet.TEST.jButton1ActionPerformed(TEST.java:90)













        at projet.TEST.access$000(TEST.java:15)













        at projet.TEST$1.actionPerformed(TEST.java:54)













        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)













        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)













  











voici les deux class

IUEmploye

 et Detail







/**************IUEmploye

import javax.swing.JDesktopPane;
 
publicclass IUEmploye extends javax.swing.JInternalFrame{
 
   IUMenu menu;
   Detail L;
public IUEmploye (){

         initComponents();
      }

 
  public IUEmploye (IUMenu menu){
     this.menu = menu;
   try{
            initComponents();
    }
 
catch(SQLException ex){
            System.out.println(ex.getMessage());
        }
 
                   }
....
 
privatevoid jButton2ActionPerformed(java.awt.event.ActionEvent evt){                                        
// TODO add your handling code here:
        
           L = new Detail ();
         menu.d.add(L);
                 try{
 
 
            L.setSelected(true);
        }
catch(PropertyVetoException ex){
            Logger.getLogger(IUMenu.class.getName()).log(Level.SEVERE, null, ex);
        }
            L.setLocation(20, 10);
            L.setVisible(true);
            this.setVisible(false);
         
           
}  

}

//******Detail

import java.beans.PropertyVetoException;

public class Detail

extends javax.swing.JInternalFrame {


    /** Creates new form Detail

*/
    IUMenu m;
    IUEmploye em;
    public Detail

() {
     
        initComponents();
      
      }
    public Detail

(IUMenu m) {

               initComponents();
      
        this.m = m;

               }
     private void B2(java.awt.event.ActionEvent evt) {


    
    em = new IUEmploye ();
   
           m.d.add(em);
    
        try {




            em.setSelected(true);

        } catch (PropertyVetoException ex) {
    
        }
            
            em.setLocation(20, 10);
            em .setVisible(true);
            this.setVisible(false);
       
}
Commenter la réponse de cs_dragchm

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.