2015-03-26 3 views
0

В моем приложении я использую JOptionPane.showConfirmDialog() в нескольких местах.Java Swing: Как предотвратить JOptionPane.showConfirmDialog() от фокусировки?

Теперь у меня есть требование, чтобы он не фокусировал кнопку, так что, когда пользователь нажимает < Введите >, диалог остается.

Есть ли способ сделать это без необходимости писать собственное расширение диалога?

Чтобы уточнить: основная проблема заключается в том, что он может не закрываться при вводе пользователем. Диалог, не фокусирующийся, является просто очевидным способом достижения этого.

ответ

3

Если вы установили пользовательские кнопки и установили значение начальной кнопки в значение «null», это даст вам поведение, которое вы хотите: ни одна изначально не сфокусированная кнопка, поэтому нажатие клавиши «Ввод» ничего не сделает.

Смотрите пример ниже:

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]); 
    } 
} 
+0

Однако Windows, кажется, лечить нажав [пробел] как нажатием клавиши [Enter]. Диалоговое окно будет закрыто в зависимости от того, какая кнопка имеет фокус. –

Смежные вопросы