在多个JFrame之间切换

时间:2015-05-21 09:05:28

标签: java jframe jbutton

我对Java比较陌生,我正在尝试进行某种测验。我创建了3个JFrame,都在同一个包中。在我的主框架上,有两个按钮(一个用于英文版,另一个用于德文版)。我想按下这些按钮后切换JFrames(这样我就可以按“英语”,查看我的英语测验框架并与之互动)。抬起头来对我没什么帮助,因为我对它并不是很有经验。甚至可以像这样做吗?如果没有,我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

标准方法是使用Card Layout,它允许您使用相同的JFrame,因为您在应用程序的不同位置使用不同的东西填充它。因此,最初,您的JFrame将显示加载屏幕,然后用户按下一个按钮,您将加载一组新的组件,而不会丢弃当前的JFrame。在某些情况下,您可能还需要进行一些尺寸调整。

很难说没有看到任何代码,但通常情况下,你做的是这样的事情:

new Frame(args);
this.dispose();

上面的代码假设Frame的构造函数负责启动并使组件可见。 this.dispose();处理了当前JFrame(假设您的课程扩展为JFrame)。

答案 1 :(得分:0)

创建一个Jframe窗口。之后,创建JPanels所需的所有功能,如按钮,文本字段和标签。确保面板与Jframe的大小相同。 Panel的工作方式与JFrame相同,代码明智。

此代码将为您拼凑所有内容:

    panel.setSize(Jframe.getSize())   //That wont
    panel.add(button);  //Just remember you need to add more code to position the buttons correctly. 
                        //If you using netbeans builder:
                        //You just have to use this one line in the constructor/intialiser method
    frame.add(panel);   //This will add the panel to the Jframe/Window
                        //No need to add extra code for positioning.

如果要在面板之间切换。在按钮按下方法中,使用此

    frame.setContentPane(panel); //panel = panel you want to change too.
    frame.repaint();             //Ensures that the frame swaps to the next panel and doesn't get stuck.
    frame.revalidate();          //Ensures that the frame swaps to the next panel and doesn't get stuck.

首次启动Java应用程序时,您必须设置内容窗格,否则它将显示为空白窗口。

     frame.setContentPane(panel);   //Starting Panel
     frame.setVisible(true);        //Make the frame visible

很抱歉,如果说明不好,我没有足够的时间来完整解释。

答案 2 :(得分:0)

你的框架1中有两个按钮吗?首先,双击“英语”按钮。让我们说该按钮的变量名是jButton1。在该按钮内键入此内容。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {   
    this.dispose();
    EnglishFrame eng = new EnglishFrame();
    eng.setVisible(true);
}

然后双击另一个显示“German”(jButton2)的按钮。在里面输入这个。

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {   
        this.dispose();
        GermanFrame german = new GermanFrame();
        german.setVisible(true);
    }

this.dispose() - 这将导致jFrame窗口关闭

然后您创建另外两个表单的对象。 (在您的情况下,英语和德国的表格)

.setVisible(true) - 这将显示表单。