按Enter键关闭对话框

Jak*_*rka 5 java swing dialog

我有一个特殊的要求:

我有一个创建新对象模式对话框,其中包含许多字段和按钮确定和取消.我希望OK按钮具有焦点,因此用户只需调用对话框并按Enter即可创建具有默认值的新对象.我试着打电话requestFocusInWindow(),但是在实际显示窗口之前这不起作用.在显示窗口后我无法调用它,因为对话框是模态的.并且setInitialFocusedComponent()在对话框类中没有类似的方法.

好的,那么我继续为KeyListener对话框中的每个字段创建一个(只有3个,没什么大不了的),如果用户按Enter键就会手动按OK按钮.现在的问题是第一个字段(因此是焦点字段)是a JSpinner,它消耗它自己的字段KeyEvents.所以按Enter键什么也没做.

如何在不重新组织元素的情况下在对话框中实现"Enter to OK"行为?

Gui*_*let 8

两件事情:

  1. 你尝试过使用setDefaultButton吗?: dialog.getRootPane().setDefaultButton(okButton)
  2. 您可以考虑在invokeLater中调用requestFocusInWindow().

像这样:

 SwingUtilities.invokeLater(new Runnable()
     @Override
     public void run() {
         okButton.requestFocusInWindow();
     }
 });
Run Code Online (Sandbox Code Playgroud)