Java JDialog的模态存在问题(主窗口的鼠标事件被触发和缓冲)
我做了一个JDialog,这个模态大概工作得很好Java JDialog的模态存在问题(主窗口的鼠标事件被触发和缓冲),java,swing,events,modal-dialog,jcombobox,Java,Swing,Events,Modal Dialog,Jcombobox,我做了一个JDialog,这个模态大概工作得很好 dialog.setModalityType(JDialog.ModalityType.APPLICATION_MODAL); dialog.setVisible(true); 但我的问题是: 我在jcombobox.setSelection()之后抛出Jdialog,我需要在Accept按钮中单击两次以隐藏对话框,因为下拉式弹出窗口占用了关闭对话框的第一次单击。在调用对话框之前,我通过手动调用jcombobox.hidePopup()修复了
dialog.setModalityType(JDialog.ModalityType.APPLICATION_MODAL);
dialog.setVisible(true);
但我的问题是:
- 我在jcombobox.setSelection()之后抛出Jdialog,我需要在Accept按钮中单击两次以隐藏对话框,因为下拉式弹出窗口占用了关闭对话框的第一次单击。在调用对话框之前,我通过手动调用jcombobox.hidePopup()修复了这个问题,但我无法理解后者是否是模态的,为什么鼠标事件会触发窗口外的事件`
- 我的主窗口以某种方式缓冲鼠标事件,因此对于那些在绘制模式对话框时未激活的鼠标事件(如前一点所发生的),它们似乎得到缓冲,并在对话框关闭后应用。这是预期的行为吗
- 将
替换为添加到jcombobox.hidePopup(“没有意义”)
jcombobox的
或ActionListener
itemstener
- 通过@camickr添加以正确设置
FocusOwner
- 为什么会有另一个
,可能是在向鼠标侦听器
发送任何事件的情况下,您无法正确设置JComponents
焦点
- 将
替换为添加到jcombobox.hidePopup(“没有意义”)
jcombobox的
或ActionListener
itemstener
- 通过@camickr添加以正确设置
FocusOwner
- 为什么会有另一个
,可能是在向鼠标侦听器
发送任何事件的情况下,您无法正确设置JComponents
焦点
SwingUtilities.invokeLater(new Runnable(){…})的Runnable中调用它,在事件线程上对JDialog进行排队,从而延迟JDialog的显示,该怎么办
?如果您通过使用SwingUtilities.invokeLater(new Runnable(){…})在Runnable中调用JDialog,从而在事件线程上对其进行排队,从而延迟JDialog的显示,该怎么办?