我在同步GUI的显示方式时出现问题......
目前我有以下作为主程序
public class MainGUI extends JPanel{
private static final long serialVersionUID = 1L;
public static void main(String[] args) throws Exception {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame("Firstscreen_Main");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Firstscreen_Main gp = new Firstscreen_Main();
// rest code
f.setVisible(true);
}
});
}
}
其中Firstscreen_Main是类似
的类public class Firstscreen_Main extends JPanel implements ActionListener, ChangeListener
{
// code
}
在此之后,我在上面的类中有一个按钮,其中有一个监听器,它提供了一个用户输入的对话框....
为此我在侦听器处理中添加了Firstscreen_Main代码
this.removeAll();
SecondScreen second = new SecondScreen();
这不会删除第一个屏幕的内容......
这可能是因为对话框应该显示它来自(unsure ? )
但是如何完全销毁第一个窗口并使用存储的数据启动下一个窗口?
我想我不了解窗户的工作方式......任何人都可以解释......
我已经了解了CardLayout,但是有什么简单的方法可以从第一个屏幕中移除所有内容并制作出新的内容吗?
答案 0 :(得分:1)
尝试这样的事情:
this.removeAll(); // Remove everything from the frame
SecondScreen second = new SecondScreen(); // Create the panel
this.add(second); // Add the panel to the frame
second.revalidate();
this.repaint();
答案 1 :(得分:1)
总的来说,我认为移动对正在显示的屏幕的控制需要移动到一个单独的类,而不是让每个JPanel
打开和关闭帧。
答案 2 :(得分:0)
尝试使用this.dispose();
处理第一个屏幕让我知道它是否有效。
此致