Java多个GUI窗口创建

时间:2013-05-23 16:33:37

标签: java swing user-interface

我使用GridLayout(5,3)制作了一个简单的GUI,它是动作执行的,它也实现了动作侦听器。一些计算和算法根据用户提供的输入或按​​钮工作。到目前为止,一切正常。

在我的代码中的某个时刻,用户会获得一个弹出按摩,他使用这种常用方法JOptionPane.showMessageDialog(....)正确登录系统。我想要的是,在他按下OK按钮之后,创建一个弹出窗口的其他表单,看起来类似于我用GridLayout(5,3)制作的那个,这样我的用户就可以存储关于他的其他信息。

我真的无法让它工作,我不知道如何开始这个。

非常欢迎任何想法!欢呼并提前感谢:)

如果添加:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            Container pane = getContentPane();
            GridLayout grid=new GridLayout(10,1);
            pane.setLayout(grid);

它只会为我的gridlayout添加更多行。以上所有按钮和标签仍然存在。如何摆脱以前的标签和按钮?

1 个答案:

答案 0 :(得分:1)

你说:

  

如果添加:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = getContentPane();
GridLayout grid=new GridLayout(10,1);
pane.setLayout(grid);
  

它只会为我的gridlayout添加更多行。以上所有按钮和标签仍然存在。如何摆脱以前的标签和按钮?

如果要在JFrame上交换“视图”,则至少有三个选项。

  • 如果要将相同的GUI与相同的JTextComponents一起使用,但组件中没有文本,那么您需要浏览文本组件并在所有文本组件上调用setText("")。如果你想保留相同的JButtons和标签但是改变他们的文本,那么同样你需要通过所有这些来调用setText("something else")
  • 如果您想要全新的组件来替换旧组件,我认为最直接的方法是使用CardLayout来保存包含所有组件的JPanel。如果要将JPanel交换为另一个,请确保已使用JPanel将新的JPanel添加到CardLayout,然后在CardLayout对象上调用next()。
  • 另一种方法是手动换出JFrame的contentPane持有的JPanel,方法是调用contentPane上的removeAll(),然后调用add(nextJPanel),然后revalidate(),然后调用repaint()