JOptionPane.showOptionDialog не показывает кнопки? - PullRequest
1 голос
/ 25 июля 2011

Следующий код показывает ожидаемое диалоговое окно, за исключением отсутствия кнопок:

  final JPasswordField passwdField = new JPasswordField();
  passwdField.setColumns(20);
  final JComponent[] inputs = new JComponent[] {  passwdField };
  int res = JOptionPane.showOptionDialog(null, "Enter Password", "Login", 
                  JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, 
                  null, inputs, "");

показывает следующее диалоговое окно (Java 6.2 ?, 64-разрядная версия Windows 7):

enter image description here

Почему нет кнопки ОК / Отмена? (кстати, размер диалогового окна не изменяется, поэтому я не знаю, находятся ли они за пределами видимой рамки)

(Кроме того, нажатие Enter не закрывает диалоговое окно, «x» закрывает диалоговое окно)

1 Ответ

2 голосов
/ 25 июля 2011

Ваша проблема с массивом входов. Прочитайте API, и он скажет вам, что он должен быть другим. Я обычно использую массив String, каждая String представляет кнопку String, или иногда я использую смесь объектов, компонентов и строк. Например,

  JPasswordField passField = new JPasswordField(10);
  Object[] inputs = {passField, "OK", "Cancel"};
  int res = JOptionPane.showOptionDialog(null, "Enter Password", "Login", 
           JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, 
           null, inputs, "");
  if (res == 1) {
     System.out.println("Password is: " + new String(passField.getPassword()));
  }
...