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