2010-03-13 7 views
0

J'ai créé la classe NewProject extends JInternalFrame. Ensuite, je crée une nouvelle action nommée "NEW", localisée dans le menu Fichier. J'ai mis le code NewProject p = new NewProject(); p.setVisible(true); à la méthode ActionPerformed de l'action. Mais quand je lance le module et que je clique sur "NOUVEAU" dans le menu Fichier, rien n'apparaît. Où peut-être un problème?comment créer un cadre interne dans la plate-forme netbeans?

EDIT: I partiellement résolu par code:

public void actionPerformed(ActionEvent e) { 

    JInternalFrame f = new JInternalFrame(); 
    f.setSize(500, 500); 
    f.setVisible(true); 
    JDesktopPane p = new JDesktopPane(); 
    p.add(f); 

    //WindowManager.getDefault().getMainWindow().setTitle("fFF"); 
    WindowManager.getDefault().getMainWindow().add(p) 

}

mais GUI est cassée. Lorsque je crée une nouvelle image interne, l'arrière-plan noir apparaît lorsque je me déplace sur cette image. Une idée de comment le résoudre?

+0

Pourriez-vous nous expliquer un peu plus ce que vous voulez accomplir? – Enrique

+0

Je veux créer un cadre interne dans la plate-forme netbeans. Lorsque j'exécute le module et sélectionne l'action qui crée ce cadre interne, je veux que l'image apparaisse – joseph

+0

Vous devez d'abord créer un conteneur de niveau supérieur tel que JFrame, puis ajouter le JInternalFrame dans le JFrame. – Enrique

Répondre

2

Le numéro de série Container pour JInternalFrame est JDesktopPane. L'article How to Use Internal Frames décrit l'essentiel, et vous pouvez aimer ce court example d'utiliser Action et JMenu dans ce contexte. Bien que l'éditeur de l'interface graphique de NetBean soit attrayant, vous pouvez d'abord vous familiariser avec les composants Swing.

Addendum: Vous ne pouvez pas ajouter un Top-Level Container comme JFrame à l'autre comme JDesktopPane, mais vous pouvez ajouter un certain nombre de cas JInternalFrame à un JDesktopPane. Essayez le demo pour voir comment cela fonctionne. Additif: Ah, vous voulez dire NetBeans Platform. Désolé, je ne l'ai pas utilisé.

+0

Mais le problème est que je ne sais pas comment obtenir le bureau de la fenêtre principale ou quoi que ce soit où je peux attacher mon JFrame. Je parle de la plate-forme Netbeans. – joseph

+0

Désolé pour le lien rompu de ce tutoriel. Voir ci-dessus pour plus. – trashgod

+0

Je ne suis pas sûr Si vous me comprenez (je ne parle pas anglais). Je sais comment créer un cadre interne lorsque je crée ma propre fenêtre principale. Mais je ne sais pas comment obtenir mon cadre interne dans la fenêtre principale pré-créée de Netbeans Plaform – joseph

1

Je pense que la réponse que vous cherchez est ici: https://blogs.oracle.com/geertjan/jdesktoppane,-jinternalframe,-and-topcomponent

Il Geertjan Wielenga montrent un exemple en utilisant un TopComponent avec un JDesktopPane intérieur, où vous pouvez joindre une JInternalFrame.

... 
... 
... 
private JDesktopPane jdpDesktop; 
private int openFrameCount = 0; 
public DemoTopComponent() { 
    initComponents(); 
    setName(NbBundle.getMessage(DemoTopComponent.class, "CTL_DemoTopComponent")); 
    setToolTipText(NbBundle.getMessage(DemoTopComponent.class, "HINT_DemoTopComponent")); 
    setLayout(new BorderLayout()); 
    jdpDesktop = new JDesktopPane(); 
    createFrame(); // Create first window 
    createFrame(); // Create second window 
    createFrame(); // Create third window 
    //Add the JDesktop to the TopComponent 
    add(jdpDesktop); 
} 
protected void createFrame() { 
    MyInternalFrame frame = new MyInternalFrame(); 
    frame.setVisible(true); 
    jdpDesktop.add(frame); 
    try { 
     frame.setSelected(true); 
    } catch (java.beans.PropertyVetoException e) { 
     } 
} 

class MyInternalFrame extends JInternalFrame { 
    int xPosition = 30, yPosition = 30; 
    public MyInternalFrame() { 
     super("IFrame #" + (++openFrameCount), true, // resizable 
      true, // closable 
      true, // maximizable 
      true);// iconifiable 
     setSize(300, 300); 
     setLocation(xPosition/openFrameCount, yPosition/ openFrameCount); 
     // Add some content: 
     add(new JLabel("hello IFrame #" + (openFrameCount))); 
     } 
} 
... 
... 
... 
+0

Pouvez-vous au moins donner un exemple de comment cela a été fait? Si ce lien disparaît dans X ans, et que quelqu'un rencontre cette question dans l'espoir de trouver une solution, votre message leur fournira-t-il une solution? En ajoutant l'exemple pertinent, la qualité de votre réponse va de 0 (aurait dû être un commentaire) à 10 (une réponse/solution réelle) – Frits

+1

Ah parfait - vous avez terminé votre édition que j'ai posté mon commentaire. Je rétracte mon drapeau, et +1. C'est à quoi devrait ressembler une réponse. Bien joué. – Frits

+0

Vous avez raison! Pardon. – Baaden

Questions connexes