我有一个特殊的要求:
我有一个创建新对象模式对话框,其中包含许多字段和按钮“确定”和“取消”。我希望 OK 按钮具有焦点,这样用户就可以简单地调用对话框并按 Enter 键来创建一个具有默认值的新对象。我尝试调用 requestFocusInWindow()
,但在窗口实际显示之前它不起作用。显示窗口后我无法调用它,因为对话框是模态的。并且对话框类中没有像 setInitialFocusedComponent()
这样的方法。
好的,然后我继续为对话框中的每个字段(只有 3 个,没什么大不了的)创建一个 KeyListener
,如果用户在它们上面按 Enter,它会手动按下 OK 按钮.现在的问题是第一个字段(因此是重点字段)是一个 JSpinner
,它使用自己的 KeyEvents
。所以按 Enter 什么都不做。
如何在不重新组织元素的情况下在我的对话框中实现这种“Enter to OK”行为?
最佳答案
两件事:
- 您是否尝试过使用 setDefaultButton?:
dialog.getRootPane().setDefaultButton(okButton)
- 您可以考虑在 invokeLater 中调用您的 requestFocusInWindow()。
像这样:
SwingUtilities.invokeLater(new Runnable()
@Override
public void run() {
okButton.requestFocusInWindow();
}
});
关于java - 按 Enter 关闭对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10324704/