在java中切换内部帧

时间:2013-11-15 14:36:48

标签: java swing jinternalframe jdesktop

我的java netbeans项目中有 1 MAIN-FRAME 2 INTERNAL-FRAMES (比如 - > Frame 1Frame 2) 。要从主框架切换到第1帧,我使用以下代码在主框架类中: -

    Frame1 frame = new Frame1();
    frame.setVisible(true);
    jDesktopPane1.add(frame);
    setContentPane(jDesktopPane1);

上面的代码工作得非常好,从而创建了框架1.但是下面的代码 WHICH在框架1的CLASS 不幸地不起作用: -

    Frame2 frame2 = new Frame2();
    MainFrame mf = new MainFrame();
    frame2.setVisible(true);
    mf.setContentPane(frame2);

请告诉我哪里出错了。我是java的新手。所以,如果你发现这个问题,请保持冷静。

1 个答案:

答案 0 :(得分:2)

由于您未提供SSCCE,我会做出一些假设:

  • Frame1和Frame2都是JInternalFrames

  • MainFrame是一个JFrame,你只想要一个它的实例

基于此,在Frame1创建Frame2之后,它不应该创建另一个MainFrame。相反,需要将Frame2添加到原始MainFrame的JDesktopPane。

有很多方法可以做到这一点。一种方法是为MainFrame创建一个方法,允许调用者将JInternalFrame添加到其桌面。类似的东西:

public void addFrame(JinternalFrame iFrame)
{
   desktop.add(iFrame);
}

这将需要每个调用者(在本例中为Frame1)具有原始MainFrame实例的句柄。