Java Swing: как предотвратить фокусировку JOptionPane.showConfirmDialog()?
В моем приложении я использую JOptionPane.showConfirmDialog() в нескольких местах.
Теперь у меня есть требование запретить фокусировку на кнопке, чтобы, когда пользователь нажимает
Есть ли способ сделать это без необходимости писать собственное расширение диалога?
Чтобы уточнить: основная проблема заключается в том, что он может не закрыться, когда пользователь нажимает ввод. Диалог не фокусируется - просто очевидный способ сделать это.
1 ответ
Решение
Если вы установите пользовательские кнопки и установите начальное значение кнопки на ноль, это даст вам поведение, которое вы хотите: нет изначально сфокусированной кнопки, поэтому нажатие клавиши Enter ничего не изменит.
Смотрите пример ниже:
public class Test {
public static void main(final String[] args) {
final Object[] options = { "OK", "Cancel" };
JOptionPane.showOptionDialog(null, "Enter won't work.", "Title",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
null, options,
null); // this is the trick
JOptionPane.showOptionDialog(null, "Can press Enter.", "Title",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
null, options, options[1]);
}
}