2014-01-29 34 views
1

在我的程序中,我点击一个按钮时弹出一个窗口。它做了一些复杂的事情,所以它需要在它自己的类中。所以,而不是多个JFrame我可以有其他东西,比如支持多个窗口的布局。请记住,我已经有了一个解决方案,我只是问是否有更好的方法来做到这一点,1000种窗口中不会有1000个任务栏图标。替代多个JFrame

+2

你检查了[JInternalFrame](http://docs.oracle.com/javase/7/docs/api/javax/swing/JInternalFrame.html)吗? – Laf

+2

[_Et al._](http://stackoverflow.com/q/9554636/230513) – trashgod

+0

谢谢你们。 –

回答

2

如果您绝对需要为每个启动的任务显示一个新窗口,请查看JInternalFrame。这些可以在父窗口内创建,并且每次创建时都不会创建新的任务栏图标。否则,如果您不需要每个任务的新窗口,则应该考虑为您的任务创建不同的线程。如果你的谷歌“java concurency”有很多可用的文档。

4

真的,您如何配置您的GUI将取决于您当时的需求,因此您的问题确实没有一刀切的答案。 不过话说回来,我会建议你,

  1. 齿轮你的挥杆GUI类,“查看”类别,努力创造JPanels。
  2. 然后,您可以轻松地将这些视图添加到JFrame,JDialog,JApplet,另一个JPanel,JTabbledPane,JScrollPane,JInternalFrame中,作为CardLayout“卡”的一部分,...这会给你的程序带来巨大的灵活性。
  3. 如果您需要在单个GUI中交换“视图”,请考虑使用CardLayout来执行此操作。使用CardLayout的JPanel将成为显示器,并且在CardLayout的控制下依次查看“card”JPanels。
  4. 如果你需要显示一个独立的窗口,并且需要冻结调用窗口,然后把你的视图放到一个模态的JDialog或者JOptionPane(它实际上只不过是一个带有一些语法糖的JDialog)。