我的java netbeans项目中有1个主框架和2个内部框架(例如-> Frame 1Frame 2)。为了从主机切换到框架1,我在主框架类中使用了以下代码:

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


上面的代码可以完美地工作,从而创建了框架1。但是不幸的是,下面的代码WHICH IN THE FRAME 1的CLASS不能正常工作:

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


请告诉我我要去哪里错了。我是Java的新手。因此,如果您发现这个问题很傻,请保持冷静。

最佳答案

由于您未提供SSCCE,因此我作一些假设:


Frame1和Frame2都是JInternalFrames
MainFrame是一个JFrame,您只需要一个实例


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

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

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


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

09-11 18:53