【发布时间】:2016-04-18 01:47:14
【问题描述】:
我有一个应用程序,有时我在其中使用“模态”较小的窗口。为了模拟这种模态行为,我将它们定义为 JFrame 的扩展,禁用主应用程序框架并将默认关闭操作设置为不执行任何操作。问题在于 JFrame 不能有父级,因此,当用户单击关闭窗口的按钮时,它实际上会关闭,系统会返回上次使用的应用程序,这并不总是想要的效果(例如,用户打开模态窗口,然后他/她 Alt+Tabs 进入另一个应用程序,然后切换回模态窗口并关闭它,从而呈现最后一个应用程序,而不是我的主框架)。有什么方法可以做到这一点(将 JFrame 绑定到父级或类似的东西......?)。请注意,JOptionPane 不是一个选项,因为这些较小的窗口需要在每个窗口中包含大约 20 个不同的自定义组件。
【问题讨论】:
-
你为什么不去
JDesktopPane??使用方法可以看这里:docs.oracle.com/javase/tutorial/uiswing/components/… -
看起来是个不错的选择,但 JDialog 似乎更易于使用,因为 JDesktopPane 是 JFrame 的容器,因此我仍然需要 JFrame,但 JDialog 允许我简单地替换“扩展 JFrame”与“扩展 JDialog”。无论如何,请投票,因为我从未听说过这门课,而且看起来很有用。
-
JDesktopPane是JInternalFrame的容器,而不是JFrame.. -
啊,对不起,我错了,所以 JDesktopPane 可以用作 JFrame 的 setContentPane 的参数,这就是您建议的方式,不是吗?谢谢!