在 mac osx 上关注 java7 模式对话框的问题 [英] Focus issues with java7 modal dialogs on mac osx
本文介绍了在 mac osx 上关注 java7 模式对话框的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我一直在验证在 mac osx 小程序上运行的 Swing 应用程序.
在此验证过程中,我发现模态对话框存在以下问题:
- 当对话框打开并设置为 setModal(true) 时,它会阻止根窗口的内容,但是如果您单击根窗口上的某处,对话框会在其下方,但应保留在根窗口的顶部.
- 如果对话框有 JTextInputField,即使您单击它,它也不会获得焦点.
所以我创建了一个小程序来显示问题.你能帮我理解这里有什么问题吗?
package com.macosx.tests;导入 java.awt.*;导入 java.awt.event.ActionEvent;导入 java.awt.event.ActionListener;导入 javax.swing.*;公共类 DialogExample 扩展 JApplet{private static final long serialVersionUID = 1L;私人 JPanel 面板;私人 JButton openDialogBtn;私有无效 doStart() {面板 = 新 JPanel();panel.setPreferredSize(new Dimension(500,500));openDialogBtn = new JButton("打开对话框");openDialogBtn.addActionListener(new ActionListener(){@覆盖公共无效动作执行(ActionEvent arg0){ModalDialog dialog = new ModalDialog(panel, true);dialog.setVisible(true);}});panel.add(openDialogBtn);设置内容窗格(面板);}类 ModalDialog 扩展 JDialog {private static final long serialVersionUID = 1L;公共模态对话框(组件父级,布尔模态){维度维度ParentFrame = parent.getSize();setSize(new Dimension((parent == null) ? 300 : dimensionParentFrame.width/2, 75));setModal(模态);setModalityType(ModalityType.APPLICATION_MODAL);JTextField txtField = new JTextField();添加(txtField,BorderLayout.CENTER);}}@覆盖公共无效开始(){尝试 {SwingUtilities.invokeAndWait(new Runnable() {公共无效运行(){开始();}});} 捕获(异常 e){抛出新的运行时异常(e);}}}
使用上面的创建一个 .jar 文件(test.jar).完成后,创建一个包含以下内容的 html 文件:
<头><title>对话测试小程序</title>头部><身体><applet id="DialogTestApplet" height="800" width="600"代码="com.macosx.tests.DialogExample"存档=test.jar"></小程序>