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/

相关文章:

JavaFX DoubleProperty intValue() 方法始终返回 0,其中返回 0....100

android - Activity 泄漏了窗口/对话框(又是这个!)

java - 如何用Java制作一个Android倒计时器?

java - 在哪个 namespace /包中放置异常?

java - 我如何返回以 Ex : TC00 in java 开头的完整文件路径

java - ProjectForge 中的 LifecycleException

java - 如何让Swing MetaWidget动态调整其大小

java - 如何选择表中最后插入的行?

java - Swing:GridBagLayout动态复选框位置

android - 通知像 whatsapp 或短信应用程序 android