2014-04-29 4 views
0

j'ai fini d'ajouter le JInternalFrame à l'intérieur de mon JFrame et la façon dont le cadre est ajouté est de cliquer sur l'icône JMenuItem et cela se passe bien mais quand jamais le cadre est ajouté l'ancien composant sont supprimés et la couleur blanche apparaît. ce que je suis en train de faire est de définir fixer JInternalFrame emplacement avec l'autre composant avec effet sur un autre composantpourquoi JInternalFrame supprimer tous les autres composants

le code pour JInternalFrame

package animeaidvlcj; 

import javax.swing.JInternalFrame; 


/* Used by InternalFrameDemo.java. */ 
public class MyInternalFrame extends JInternalFrame { 
    static int openFrameCount = 0; 
    static final int xOffset = 0, yOffset = 25; 

    public MyInternalFrame() { 
     super("Document #" + (++openFrameCount), 
       true, //resizable 
       true, //closable 
       true, //maximizable 
       true);//iconifiable 

     //...Create the GUI and put it in the window... 

     //...Then set the window size or call pack... 
     setSize(300,300); 

     //Set the window's location. 
     setLocation(xOffset*openFrameCount, yOffset*openFrameCount); 
    } 
} 

le code d'action

Action newAction = new AbstractAction("New", newIcon) { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      desktop = new JDesktopPane(); 
      createFrame(); 
      setContentPane(desktop); 
      desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE); 
     } 
    }; 

créer méthode

protected void createFrame() { 
    MyInternalFrame frame = new MyInternalFrame(); 
    frame.setVisible(true); //necessary as of 1.3 
    desktop.add(frame); 
    try { 
     frame.setSelected(true); 
    } catch (java.beans.PropertyVetoException e) {} 
} 
+0

Pour une meilleure aide plus rapidement, postez un [MCVE] (http://stackoverflow.com/help/mcve) (Exemple minimal et vérifiable). –

Répondre

2

« pourquoi JInternalFrame supprimer tous les autres composants »

Eh bien d'abord regarder ce code dans votre Action

desktop = new JDesktopPane(); 
createFrame(); 
setContentPane(desktop); <== this line in particular 

vous définissez le volet contenu du cadre (en supposant setContenPane() appelle le cadre de la classe) avec le desktop, qui supprimera le panneau de contenu précédent, qui contient tous vos composants. Donc, la seule chose qui apparaît est le desktop ainsi que le nouveau JInternalFrame.

Sauf si vous créez un Multiple Document Interface (MDI), qui vitres de bureau et les cadres internes sont principalement pour, je vous suggère de simplement utiliser un JDialog et oubliez le DesktopPane. Vous pouvez voir How to use Dialogs. Il est à peu près la même chose que la création d'un JFrame, sauf que vous avez la possibilité de modality.

+0

J'essaye d'employer l'autre cadre pour vlcj ainsi les autres options sont mauvaise idée mais je peux remplacer le setContentPane (bureau) à l'autre comme jpanel – loverBoy

+0

Les deux cadres doivent-ils être accessibles en même temps? Comme quand la nouvelle fenêtre est ouverte, voulez-vous pouvoir accéder au cadre principal? –

+0

oui absolument.mais je ne sais pas parce que je pense que vlcj peut fonctionner dans l'autre cadre pendant que j'utilise l'image principale – loverBoy

Questions connexes