我想在Java Swing中创建一个JDialog,当它打开时,其父窗口无法访问(就像在Microsoft Word中打开文件资源管理器对话框时一样)。 JDialog类中是否有提供此行为的方法?JDialog在它的JFrame父类
回答
使用JDialog.setModal设置对话框中可见
JDialog yourdialog = ...
yourdialog.setModal(true);
...
yourdialog.setVisible(true);
前(真)你有两种选择:
使用在JOptionPane
静态方法。这些将在默认情况下创建模式对话框:
Window parentWindow = SwingUtilities.getWindowAncestor(parentPanel);
JOptionPane.showMessageDialog(parentWindow, "Hello, World); // Create modal dialog aligned with parent window.
创建JDialog
明确:
Window parentWindow = SwingUtilities.getWindowAncestor(parentPanel);
JDialog dlg = new JDialog(parentWindow, ModalityType.APPLICATION_MODAL);
第一个选项是简单得多,我更愿意它特别模态对话框。
如何在他的JFrame Parent中锁定JDialog? 的确如此,使用JDialog.setModal能够使jdialog就像其他应用程序上的对话一样。停止所有框架bofore jDialog关闭
看起来你有一个与其他人有点不同的答案,但它不是很清楚。我并不真正了解你的意思是在它的父代中“锁定”一个JDialog。你能解释一下你的想法吗? – RustyTheBoyRobot 2012-06-11 14:59:34
Adamski和Jan都已经有了正确的答案,但我想确保模态窗口的概念得到解释。
OP询问了一个阻止访问父对象的对话框。这被称为模态对话框(或模态窗口)。维基百科给出this definition:
在用户界面设计,模态窗口是一个子窗口,要求用户与它进行交互,才可以返回到操作父应用
所以,“莫代尔”的意思它将阻止父窗口(用户不能与除模态窗口之外的任何窗口交互),而“非模态”或“无模式”意味着子窗口和父窗口将同时可访问。
这是一个概念,通常存在于GUI框架中,而不仅仅是Swing框架。在您使用的任何GUI框架中,您可以通过查找modal
属性来找到这种功能。
- 1. JFrame-JDialog通信
- 2. 类和JFrame之间的Java通信JDialog
- 3. 扩展的JDialog(隐藏?)没有出现在父JFrame的前面?
- 4. 如何将JFrame设置为JDialog的父级
- 5. 将jFrame更改为jDialog?
- 6. 需要使用JOptionPane.ERROR_MESSAGE类型的JDialog的在一个JFrame
- 7. 如何从JDialog框中将值返回给父JFrame?
- 8. JDialog:在Jdialog处于活动状态时访问Jframe
- 9. 在JFrame上显示JDialog(“请稍候”)
- 10. 无法将jdialog居中在jframe中
- 11. onToped的JFrame打开的JDialog =超过JFrame的
- 12. 父母的中心JDialog
- 13. JFrame和JDialog有什么区别?
- 14. 如何将JDialog粘贴到JFrame?
- 15. 无模式JDialog需要在父类顶部可见
- 16. 鼠标滚轮不在JDialog中滚动,但在JFrame中工作
- 17. JDialog中的JDialog
- 18. 的JDialog出现在屏幕的左上角时,当我设置它的位置,它的父的中心
- 19. 物质用户界面和未修饰的JDialog/JFrame
- 20. 从关闭的JDialog对象调用Jframe对象
- 21. JFileChooser作为一个JDialog父项
- 22. JDialog:防止父框架关闭
- 23. 问题更新父JFrame
- 24. JOptionPane未对齐到父JFrame
- 25. 在win 7任务栏上显示背后的模态JDialog的Iconified JFrame点击
- 26. JOptionPane显示在父JFrame后面
- 27. Java:如何判断何时移动JFrame或JDialog?
- 28. 如何在NetBeans中设置jDialog的父级?
- 29. 如何使用Swing和JLayer <>在Java中制作模糊的JFrame/JDialog?
- 30. Modal JDialog在solaris CDE上消失在父节点后面
或使用定义模态的JDialog构造函数之一。 – Qwerky 2010-09-14 16:00:45