Java 在多个帧之间切换
我对Java比较陌生,我正在尝试做一些测试。我在同一个包中创建了3个JFrames。在我的主框架上,有两个按钮(一个用于英语版本,另一个用于德语版本)。我想在按下这些按钮后切换JFrames(这样我就可以通过按下“English”来查看我的英语测试框架并与之交互)。查一查对我一点帮助都没有,因为我对它没有真正的经验。甚至可以这样做吗?如果没有,我怎么做呢?标准方法是使用,它允许您在应用程序的不同点使用不同的东西填充同一JFrame。因此,最初,您的JFrame将显示加载屏幕,然后用户按下一个按钮,您将加载一组新组件,而不会丢弃当前的JFrame。在某些情况下,您可能还需要进行一些尺寸调整 在没有看到任何代码的情况下很难说,但通常情况下,所做的是这样做:Java 在多个帧之间切换,java,jframe,jbutton,Java,Jframe,Jbutton,我对Java比较陌生,我正在尝试做一些测试。我在同一个包中创建了3个JFrames。在我的主框架上,有两个按钮(一个用于英语版本,另一个用于德语版本)。我想在按下这些按钮后切换JFrames(这样我就可以通过按下“English”来查看我的英语测试框架并与之交互)。查一查对我一点帮助都没有,因为我对它没有真正的经验。甚至可以这样做吗?如果没有,我怎么做呢?标准方法是使用,它允许您在应用程序的不同点使用不同的东西填充同一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)-这将显示表单