【问题标题】:Java JOptionPane.showConfirmDialog hot keyJava JOptionPane.showConfirmDialog 热键
【发布时间】:2011-01-25 12:06:12
【问题描述】:

我正在使用 JOptionPane.showConfirmDialog 在 Java 中显示一个确认对话框。该对话框向用户显示 Yes No 确认。这被称为如下:

int result = JOptionPane.showConfirmDialog(sessionObjects.getActiveComponent(), 
                 "Are you sure you want to exit?", "My App", JOptionPane.YES_NO_OPTION);

问题是因为这是一个简单的确认,用户可以按 y 表示是,n 表示否吗?目前用户必须点击按钮?

谢谢,

安德斯

【问题讨论】:

标签: java swing shortcut joptionpane


【解决方案1】:

还有一种更简单的可能:你可以在程序中按下alt,然后用同样的方法释放它:

public static void pressAlt(){
    try {
        Robot r = new Robot();
        r.keyPress(KeyEvent.VK_ALT);
    } catch (AWTException ex) {
        Logger.getLogger(ManualDetection.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public static void releaseAlt(){
    try {
        Robot r = new Robot();
        r.keyRelease(KeyEvent.VK_ALT);
    } catch (AWTException ex) {
        Logger.getLogger(ManualDetection.class.getName()).log(Level.SEVERE, null, ex);
    }
}

那么当你打电话时:

 pressAlt();
 int confirm = JOptionPane.showConfirmDialog(... bla bla bla ... 
                                                  ,JOptionPane.YES_NO_OPTION);
 releaseAlt();

行为完全一样,如您所愿...

【讨论】:

    【解决方案2】:

    您已经有按钮的“热键”(助记符):Alt+Y 表示“是”和 Alt+ N 表示“否”。

    您也可以按 Tab 在它们之间切换,然后按 Space 键。

    【讨论】:

    • 谢谢。我想我现在可以忍受这个了。
    • 我不相信助记符目前适用于 Mac 的按钮。 (Java 10)。即使您从 tutorial 运行 ButtonDemo.java,alt 键也会在视觉上突出显示助记符,但实际上无法使用键盘“按下”按钮。
    【解决方案3】:

    不,但您可以创建自己的 JDialog 来做到这一点。

    【讨论】:

    • 我想我可能不得不这样做。我认为现在使用 Alt+Y 作为 dogbane 建议就足够了。
    • @Andez,是的,dogbane 的解决方案应该可以正常工作,但如果您只需要使用 y 或 n,则必须自定义对话框。
    【解决方案4】:
    猜你喜欢
    • 2015-09-04
    • 1970-01-01
    • 2015-11-13
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多