Горячая клавиша Java JOptionPane.showConfirmDialog

Я показываю диалоговое окно подтверждения на Java, используя JOptionPane.showConfirmDialog. В диалоговом окне отображается подтверждение Да Нет для пользователя. Это называется следующим образом:

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

Вопрос в том, поскольку это простое подтверждение, может ли пользователь нажать y для подтверждения и n для отказа? В настоящее время пользователь должен нажимать на кнопки?

Спасибо,

Андез


person Andez    schedule 25.01.2011    source источник
comment
См. также: stackoverflow.com/questions/1505525/   -  person Joshua Goldberg    schedule 25.01.2019


Ответы (4)


У вас уже есть «горячие клавиши» (мнемоники) для кнопок: Alt+Y для «Да» и Alt+N для "Нет".

Вы также можете нажать Tab для переключения между ними и Пробел для нажатия.

person dogbane    schedule 25.01.2011
comment
Спасибо. Я думаю, я могу жить с этим сейчас. - person Andez; 25.01.2011
comment
я не верю, что мнемоники в настоящее время работают для кнопок Mac. (Ява 10). Даже если вы запустите ButtonDemo.java из учебника, клавиша alt визуально выделяет мнемонику, но не работает, чтобы фактически нажать кнопку с помощью клавиатуры. - person Joshua Goldberg; 25.01.2019

Есть еще одна более простая возможность: вы можете нажать 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();

поведение точно такое же, как вы хотели...

person v.mic    schedule 14.09.2012

Нет, но вы можете создать свой собственный JDialog, который мог бы это сделать.

person jzd    schedule 25.01.2011
comment
Я думал, что мне придется. Я думаю, что на данный момент достаточно использовать Alt + Y, как было предложено Dogbane. - person Andez; 25.01.2011
comment
@Andez, да, решение Dogbane должно работать нормально, но если вам нужно просто использовать y или n, вам придется настроить диалоговое окно. - person jzd; 25.01.2011