Problème JDesktopPane, JInternalFrame

Résolu
cs_dragchm Messages postés 3 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 21 octobre 2008 - 14 oct. 2008 à 16:08
cs_dragchm Messages postés 3 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 21 octobre 2008 - 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);
           
}
 
 
A voir également:

4 réponses

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
15 oct. 2008 à 08:17
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);
        
           
}  

}
3
cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
14 oct. 2008 à 18:23
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);
           
}

}
0
cs_dragchm Messages postés 3 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 21 octobre 2008
14 oct. 2008 à 18:47
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);
        
           
}   
 
 
0
cs_dragchm Messages postés 3 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 21 octobre 2008
15 oct. 2008 à 18:46
 

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);
       
}
0
Rejoignez-nous