java - 按 Enter 关闭对话框

标签 java swing dialog

我有一个特殊的要求:

我有一个创建新对象模式对话框,其中包含许多字段和按钮“确定”和“取消”。我希望 OK 按钮具有焦点,这样用户就可以简单地调用对话框并按 Enter 键来创建一个具有默认值的新对象。我尝试调用 requestFocusInWindow(),但在窗口实际显示之前它不起作用。显示窗口后我无法调用它,因为对话框是模态的。并且对话框类中没有像 setInitialFocusedComponent() 这样的方法。

好的,然后我继续为对话框中的每个字段(只有 3 个,没什么大不了的)创建一个 KeyListener,如果用户在它们上面按 Enter,它会手动按下 OK 按钮.现在的问题是第一个字段(因此是重点字段)是一个 JSpinner,它使用自己的 KeyEvents。所以按 Enter 什么都不做。

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

最佳答案

两件事:

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

像这样:

 SwingUtilities.invokeLater(new Runnable()
     @Override
     public void run() {
         okButton.requestFocusInWindow();
     }
 });

关于java - 按 Enter 关闭对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10324704/

相关文章:

java - 对于这个设计,哪个是更好的顶级容器,JFrame with Jpanels,或者 JDesktop with JInternalFrames

java - 动画 *.gif 帧速率太高

java - 在 JTextField 中粘贴内容时使用什么事件?

java - 向 JPanel 添加仅调用 onload 的监听器

c++ - C++ 对话框中的多种字体

Angular 5 : opening a component inside a popup/dialog, 添加内容的最佳实践?

android - 在 Android Facebook SDK 中更改对话框大小

Eclipse 中的 Java 分析 - 调用堆栈

java.lang.UnsatisfiedLinkError JNI错误

java - 尝试使用 JNI : libjvm. 在 C++ 代码中使用 jar 时出错,因此未找到