Установка мнемоники и горячих клавиш для диалога JOptionPane - PullRequest
4 голосов
/ 01 октября 2009

Можно ли назначить горячие клавиши и мнемонику для кнопок в диалоге JOptionPane? Я хотел бы иметь возможность, в диалоговом окне сгенерированного сообщения JOptionPane с параметрами Да, Нет и Отмена, нажать Y, чтобы нажать кнопку Да, N, чтобы нажать кнопку Нет, и выйти, чтобы активировать кнопку выхода. Точно так же в диалоге с кнопками Okay и Cancel я хотел бы иметь возможность активировать их с помощью клавиш enter и escape.

Я попытался передать JButtons в массив объектов кнопки JOptionPane с уже установленной Mnemonics. Мнемоника работает, и кнопки правильно отображаются в диалоговых окнах, однако они не работают должным образом, когда они активированы. Наиболее заметно, что они не располагают диалоговым окном.

Как правильно добавить горячие клавиши и мнемонику в кнопки диалога JOptionPane?

Ответы [ 3 ]

1 голос
/ 16 августа 2012

Используйте UIManager следующим образом:

UIManager.put("OptionPane.okButtonMnemonic", "79");  // for Setting 'O' as mnemonic
UIManager.put("OptionPane.cancelButtonMnemonic", "67"); // for Setting 'C' as mnemonic
1 голос
/ 02 октября 2009

Вы можете создать JOptionPane, а затем выполнить цикл по компонентам панели (дочерние элементы и т. Д.), Проверяя, есть ли какие-либо компоненты instanceof JButton, и, если это так, проверить текст и установить правильную мнемонику. 1003 *

JOptionPane p = new JOptionPane();
Component[] c = p.getComponents();
0 голосов
/ 08 декабря 2016

Отправка кнопок в качестве параметров вместо строк

    JButton button1 = new JButton( "<html>" + nextQuestion1 + "</html>");
    button1.setMnemonic('a');
    JButton button2 = new JButton(nextQuestion2 + "VUHU");
    JButton button3 = new JButton(abort);
    Object[] possibleValues = new Object[]{button1,button2,button3};
    int selectedValue = showOptionDialog(owner, question, possibleValues);
...