【问题标题】:JoptionPane Gettting Yes Option even I Press Enter On No [closed]JoptionPane Gettting Yes Option 即使我按 Enter On No [关闭]
【发布时间】:2014-09-18 10:29:13
【问题描述】:

我正在使用 Swing 应用程序。在我的一个应用程序中,当我在窗口关闭事件上放置一些代码时。

try {
    int dialog = JOptionPane.showConfirmDialog(
      null,
      "are you sure?",
      "Warning",
      JOptionPane.YES_NO_OPTION,
      JOptionPane.QUESTION_MESSAGE
    );
    if (dialog == JOptionPane.YES_OPTION) {
        System.out.println("Close system.");
        System.exit(0);
    } else if (dialog == JOptionPane.NO_OPTION) {
       System.out.println("do not Close system.");
    }
} catch (Exception ex) {
    ex.printStackTrace();
}

当我给“是”选项时,空间和同样的方式没有按钮在空间上它工作正常。但是当我尝试在输入时做同样的事情时。即使我按 no 选项,它也会一直选择 yes 选项,它会选择 yes 并关闭窗口。

那么我该如何防止这种情况发生。并实现我想做的事?

【问题讨论】:

  • 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)。
  • 好吧,我正在给屏幕截图:)
  • @AndrewThompson 看到图像现在得到想法,如果我关注 no 并按 enter,那么默认情况下仍然按 Yes。这就是问题
  • 我没有要求截图。实际点击链接并阅读有关 MCVE 的信息。
  • 我刚刚在窗口关闭事件中写了一些逻辑。这只是我向你展示的逻辑。没有代码可以显示给你。我还能给什么 mcve 呢?

标签: java swing joptionpane


【解决方案1】:

这是 Enter 键与 Space 键的 GUI 行为。您可以使用 OK_CANCEL_OPTION,因为 OK 与 Enter 更相关,并且可能会阻止使用 Enter 表示“取消”。

【讨论】:

  • 谢谢你的回答 :) 如果我没有错,你的意思是说这取决于外观和填充?
  • 我在 Windows 上尝试使用和不使用 Nimbus 均无济于事。恐怕 Enter 是硬连线到默认按钮的。
  • 好的兄弟我明白了。亚我不能说我不能是真的。因为你所说的在逻辑上是有道理的。 :) 有什么办法可以防止吗?
  • 喜欢注册一个全局 KeyListener 并用 Space 切换 Enter?远射,但您可以尝试 - 由于 JOptionPane 是模态的,它可能会令人满意。
  • 看我已经编辑了你的答案 :) 它的工作
猜你喜欢
  • 2012-12-18
  • 2012-08-31
  • 2012-01-31
  • 2012-03-02
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 2012-05-06
相关资源
最近更新 更多