Problème JDesktopPane, JInternalFrame

cheggour2004
Problème JDesktopPane, JInternalFrame

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

private void 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);
            
}
 

Niroken

Hello,

Je n'ai pas trop compris ton problème avec ton exemple de code très épuré :D

Ceci dit je te donne un exemple minimaliste qui ajoute un JInternalFrame dans le fenêtre principale.

package graphic;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;

public class JInternalFrameViewer extends JFrame implements ActionListener { 
		
	private static final long serialVersionUID = 1L;
		    
	JPanel mJInternalFrameController = new JPanel();
	JButton mButtonAddJInternalFrame = new JButton("Ajout");
	
	JPanel mJInternalFrameContainer = new JPanel();
			
	static final int sJInternalFrameViewerWidth = 850;
	static final int sJInternalFrameViewerHeigth = 527;
	
	static final int sJInternalFrameContainerWidth = 600;
	static final int sJInternalFrameContainerHeigth = 500;
	
	static final int sJInternalFrameControllerWidth = 250;
	static final int sJInternalFrameControllerHeigth = 500;
	
	public JInternalFrameViewer() {
	   setTitle("JInternalFrameViewer"); 
	   
	   setLayout(null);
	   setBounds(0, 0, sJInternalFrameViewerWidth, sJInternalFrameViewerHeigth);
	   
	   /** */
	   mJInternalFrameContainer.setLayout(null);
	   mJInternalFrameContainer.setBorder(BorderFactory.createLineBorder(Color.black));
	   mJInternalFrameContainer.setBounds(0, 0, sJInternalFrameContainerWidth, sJInternalFrameContainerHeigth);
	   mJInternalFrameController.setBounds(sJInternalFrameContainerWidth, 0, sJInternalFrameControllerWidth, sJInternalFrameControllerHeigth);
	   mJInternalFrameController.setBorder(BorderFactory.createLineBorder(Color.black));
	   
	   /** */
	   mButtonAddJInternalFrame.addActionListener(this);
	   
	   /** */
	   JInternalFrame vJInternalFrame = new JInternalFrame();
	   vJInternalFrame.setBackground(Color.blue);
	   vJInternalFrame.setBounds(0, 0, 200, 200);
	   vJInternalFrame.setVisible(true);
	   
	   /** */
	   mJInternalFrameContainer.add(vJInternalFrame);
	   mJInternalFrameController.add(mButtonAddJInternalFrame);
	   
	   add(mJInternalFrameContainer);
	   add(mJInternalFrameController);
	   
	   setVisible(true);
	   setResizable(false);
	   setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	}

    public void actionPerformed(ActionEvent pE) {
        JInternalFrame vJInternalFrame = new JInternalFrame();
        vJInternalFrame.setBounds(300, 50, 200, 200);
        vJInternalFrame.setVisible(true);
        vJInternalFrame.setBackground(Color.green);
        mJInternalFrameContainer.add(vJInternalFrame);
    }
		
} 

Et la classe main pour le lancer :

import graphic.JInternalFrameViewer;


public class Program {

    /**
     * @param args
     */
    public static void main(String[] args) {
        new JInternalFrameViewer();
    }

}

Bonne chance,
Niroken

cheggour2004

J’explique le problème une autre fois et je vous envois une parti du code:

j’ai crée un jFrame ou j’affiche plusieurs JInternalFrame .dans l’une de JInternalFrame (IUEmploye) j’ai crée un jbutton, quand je click sure ce button une autre JInternalFrame (Detail) s’affiche et la première ce ferme, mais le problème c’est que
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.IUEmploye.jButton1ActionPerformed(TEST.java:90) 
at projet.IUEmploye.access$000(IUEmploye.java:15) 
at projet.IUEmploye$1.actionPerformed(IUEmploye.java:54) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) ... 


voici une parti du code des 3 class IUMenu ,IUEmploye et Detail


//class IUMenu 

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(this); 

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); 


} 

.... 
} 



//classe 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);
 
}SVP si quelqu'un 
Niroken

Bonjour,

Je vais peut-être te paraître dur mais si je peux te donner un conseil, il faut voir trois choses:

- Ton problème n'est pas clairement défini.
- Donner la moitié de son code n'aide presque pas parce que on ne peut pas le compiler donc potentiellement pas reproduire l'erreur.
- Enfin vérifier que le code fourni est en adéquation avec l'erreur.

Quand je vois dans ton log d'erreur :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at projet.IUEmploye.jButton1ActionPerformed(TEST.java:90) 

Je m'attends donc à voir une méthode "jButton1ActionPerformed" dans IUEmploye, or à première vue, IUEmploye ne possède pas de méthode "jButton1ActionPerformed" mais une méthode "jButton2ActionPerformed".

Bonne chance,
Niroken