按Enter键
问题描述:
我有一个特殊的要求,关闭对话框。我希望确定按钮具有焦点,因此用户可以简单地调用对话框并按Enter键以创建具有默认值的新对象。我试过拨打电话requestFocusInWindow()
,但直到实际显示窗口时才起作用。显示窗口后我无法调用它,因为对话框是模态的。对话框类没有像setInitialFocusedComponent()
这样的方法。按Enter键
好吧,然后我开始为对话框中的每个字段创建一个KeyListener
(只有其中的3个,没什么大不了的),如果用户按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();
}
});
的setDefaultButton方法奏效了!谢谢。 – 2012-04-25 22:44:01
+1,我喜欢这个答案,使用默认按钮有多容易:-)。只是Java Docs的一个附注 - “默认按钮功能的确切实现取决于外观和感觉,例如,在Windows的外观和感觉中,默认按钮更改为具有焦点的按钮,以便按下Enter按钮焦点按钮,当没有焦点时,最初指定为默认按钮的按钮再次成为默认按钮。“ – 2012-04-26 02:53:54