Java 在多个帧之间切换

Java 在多个帧之间切换,java,jframe,jbutton,Java,Jframe,Jbutton,我对Java比较陌生,我正在尝试做一些测试。我在同一个包中创建了3个JFrames。在我的主框架上,有两个按钮(一个用于英语版本,另一个用于德语版本)。我想在按下这些按钮后切换JFrames(这样我就可以通过按下“English”来查看我的英语测试框架并与之交互)。查一查对我一点帮助都没有,因为我对它没有真正的经验。甚至可以这样做吗?如果没有,我怎么做呢?标准方法是使用,它允许您在应用程序的不同点使用不同的东西填充同一JFrame。因此,最初,您的JFrame将显示加载屏幕,然后用户按下一个按钮

我对Java比较陌生,我正在尝试做一些测试。我在同一个包中创建了3个JFrames。在我的主框架上,有两个按钮(一个用于英语版本,另一个用于德语版本)。我想在按下这些按钮后切换JFrames(这样我就可以通过按下“English”来查看我的英语测试框架并与之交互)。查一查对我一点帮助都没有,因为我对它没有真正的经验。甚至可以这样做吗?如果没有,我怎么做呢?

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

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

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

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

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

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

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

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

创建一个JFrame窗口。之后,创建所有组件,如按钮、文本字段和标签。确保面板与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

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

创建一个Jframe窗口。之后,创建所有组件,如按钮、文本字段和标签。确保面板与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

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

您的第1帧中有两个按钮,对吗?首先,双击显示“英语”的按钮。假设该按钮的变量名为jButton1。在那个按钮里面键入这个

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {   
    this.dispose();
    EnglishFrame eng = new EnglishFrame();
    eng.setVisible(true);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {   
        this.dispose();
        GermanFrame german = new GermanFrame();
        german.setVisible(true);
    }
然后双击另一个显示“德语”的按钮(jButton2)。在那种类型的内部

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {   
    this.dispose();
    EnglishFrame eng = new EnglishFrame();
    eng.setVisible(true);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {   
        this.dispose();
        GermanFrame german = new GermanFrame();
        german.setVisible(true);
    }
this.dispose()-这将导致jFrame窗口关闭

然后创建其他两种形式的对象。(在您的情况下,表格适用于英语和德语)


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

第1帧中有两个按钮,对吗?首先,双击显示“英语”的按钮。假设该按钮的变量名为jButton1。在那个按钮里面键入这个

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {   
    this.dispose();
    EnglishFrame eng = new EnglishFrame();
    eng.setVisible(true);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {   
        this.dispose();
        GermanFrame german = new GermanFrame();
        german.setVisible(true);
    }
然后双击另一个显示“德语”的按钮(jButton2)。在那种类型的内部

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {   
    this.dispose();
    EnglishFrame eng = new EnglishFrame();
    eng.setVisible(true);
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {   
        this.dispose();
        GermanFrame german = new GermanFrame();
        german.setVisible(true);
    }
this.dispose()-这将导致jFrame窗口关闭

然后创建其他两种形式的对象。(在您的情况下,表格适用于英语和德语)

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