Проблема с компонентом Swing и версией jdk - PullRequest
7 голосов
/ 15 апреля 2011

У меня есть поле со списком. После выбора элемента в поле со списком открывается новый JDialog.

  1. Когда я использую JDK 1.6_06, я могу нажимать на кнопки в JDialog должным образом.
  2. Когда я использую JDK 1.6_24, тогда мне нужно нажать где-нибудь в JDialog первый. Тогда только нажав на кнопка работает. Сначала я думал, что это это какая-то проблема с акцентом. Но компонент отлично работает с JDK 1.6_06. Но проблема только в JDK 1.6_24.

Я пытался гуглить. Но не нашел ответа. У кого-нибудь есть идеи?

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Я не знаю о java-версиях, но использование dialog.setVisible (true) в SwingUtilities # invokeLater решило эту проблему некоторое время назад для меня.YMMV.

0 голосов
/ 19 апреля 2011

@ All: Прошу прощения за поздний ответ.Я пробовал разные сценарии.И я обнаружил, что проблема с потоками.Кажется, что поле со списком еще не закончило свою работу, и jdialog открыт.И после этого поле со списком пытается завершить свою работу, поэтому фокус теряется на родительское окно.Я попытался открыть диалог в теме:

             new Thread() {
                    public void run() {
                        // open dialog here
                    }
                }.start();

И все работает нормально.Теперь я планирую открыть диалог с помощью SwingWorker:

                 SwingWorker worker = new SwingWorker() {
                @Override
                protected Object doInBackground() throws Exception {
                    // TODO Auto-generated method stub
                    // open dialog here
                    return null;
                }
                 };

Это также работает.Надеюсь, что это правильный путь.Пожалуйста, дайте мне знать, если я поступаю правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...