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]);
    }
}
Другие вопросы по тегам