在netbeans中的桌面窗格上显示来自另一个jinternalFrame的jInternalFrame

时间:2014-01-26 11:11:18

标签: java swing netbeans netbeans-7 jinternalframe

我想在jFrame中的桌面窗格上显示jInternalFrame1.jInternalFrame1包含一个Button,用于通过删除jInternalFrame1在桌面窗格上显示jInternalFrame2。

public class main扩展了javax.swing.JFrame {

a aa=new a();//jInternalFrame1
public main() {
    initComponents();
    jDesktopPane1.add(aa);
    aa.setVisible(true);
}
public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new main().setVisible(true);
        }
    });
}

private javax.swing.JDesktopPane jDesktopPane1;     }

jInternalFrame1中按钮下的代码;

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
     b bb=new b();//jInternalFrame2
this.dispose();
   bb.setVisible(true);
}

但是这段代码没有显示jInternalFrame2.我已经看到了很多这方面的解决方案。但是我不明白如何将这些添加到桌面pane.sorry中,因为我的英语不好。 谢谢

1 个答案:

答案 0 :(得分:1)

您忘记将bb添加到jDesktpPane1。为此,您需要在JDesktopPane中将jInternalFrame1参数作为参数。然后使用JDesktopPane添加第二个。我整理了一个简单的试运行。

来自MainFrame的代码

private void jMenuItem1ActionPerformed(ActionEvent evt) {                                           
    IFrameOne iFrame1 = new IFrameOne(jDesktopPane1);
    jDesktopPane1.add(iFrame1);
    iFrame1.setVisible(true);
}  

来自IFrmaeOne的代码

JDesktopPane desktop;
public IFrameOne(JDesktopPane desktop) {
    initComponents();
    this.desktop = desktop;
}
...
private void jButton1ActionPerformed(ActionEvent evt) {                                         
    IFrameTwo iFrameTwo = new IFrameTwo();
    desktop.add(iFrameTwo);
    this.dispose();
    iFrameTwo.setVisible(true);
} 

IFrameTwo只是一个空的JInternalFrame类。这适合我。也可以使用GUI Builder创建


更新

  

“先生,我实际上尝试过cardLayout。但我不能使用导航器添加卡片(从调色板添加)。对我来说编码很难。所以我使用了拖放。可以告诉你为什么不能添加卡片?昨天我补充说。但今天不能“

如果您想CardLayout使用JInternalFrame,请执行以下步骤

  1. 您可以创建JPanel forms。所以创建其中两个。

  2. JInternalFrame拖放JPanel并将其扩展到相框大小。

  3. 您需要自己手动编码CardLayout。但它在构造函数

    public MyInternalFrame() {
        initComponents();
        CardLayout cardlayout = new CardLayout();
        jPanel1.setLayout(cardLayout);
    }
    
  4. 然后添加您在第一步中创建的两个JPanel表单。

    jPanel1.add(new PanelForm1(), "panel1");
    jPanel1.add(new PanelForm2(), "panel2");
    
  5. 然后在actionPerformed中,您可以在面板之间切换

    public void jButton1ActionPerformed(java.awt.events.ActionEvent e) {
        cardLayout.show(jPanel1, "panel2");
    }
    
  6. 如果需要,您可以来回切换。