如何制作模态 JFrame?

2022-01-17 00:00:00 modal-dialog java swing jframe

可能重复:
如何在 Swing java 中制作 JFrame Modal

我有 2 个 JFrame,一个是主 JFrame,另一个是子 JFrame,当我显示子 JFrame 时,我试图让用户交互无法访问主 JFrame.

I have 2 JFrames one is the main JFrame and the other one is a sub JFrame, and I'm trying to make the main JFrame inaccessible to user interactions when I display the sub JFrame.

推荐答案

如何制作模态JFrame?

How to make a modal JFrame?

不要.使用模态 JDialog——这正是它们的用途.您当然明白 JDialog 可以拥有一个复杂的 GUI,就像 JFrame 拥有的任何 GUI 一样复杂.

Don't. Use a modal JDialog -- that's precisely what they're for. You understand of course that a JDialog can hold a complex GUI, as complex as any held by a JFrame.

我们经常遇到使用诸如 NetBeans 之类的 GUI 构建器来帮助他们创建 GUI 的人发布的此类帖子,并且由于构建器创建了第二个窗口的代码来扩展 JFrame,因此程序员很难返回并将其更改为对话框.解决此问题的方法是尝试将 Swing 代码创建转向创建 JPanel,而不是 JFrame 等顶级窗口.这样,如果需要,您可以在 JFrame 中使用创建的 JPanel,如果需要,可以使用 JDialog,JApplet,甚至另一个 JPanel,只要最适合这种情况.这将极大地提高您代码的灵活性.

We often run into posts like these by folks who use a GUI-builder such as NetBeans to help them create their GUI's, and since the second window's code was created by the builder to extend a JFrame, it's very hard for the programmer to go back and change it to a dialog. The way to fix this is to try to gear your Swing code creation towards creation of JPanels, not top-level windows such as JFrames. This way you could use the created JPanel in a JFrame if desired, a JDialog if desired, a JApplet, or even another JPanel, whatever works best for the situation. This will increase your code's flexibility tremendously.

相关文章