рамка показывает черный экран - PullRequest
0 голосов
/ 02 января 2012
btnnew.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                System.out.println("Hello");
                packetListener.listener();
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    });

Я получаю черный экран при запуске. Но когда packetListener.listener(); вызывает в конструкторе, он показывает.

Не могли бы вы объяснить, почему это происходит?

Ответы [ 2 ]

3 голосов
/ 02 января 2012

Код, который выполняется из слушателя, выполняется в EDT.Я предполагаю, что метод packetListner.listener () блокирует, в этом случае GUI будет зависать.Вы не должны блокировать EDT.

Прочитайте раздел из учебника по Swing на Concurrency для полного описания этой проблемы и решения.

1 голос
/ 11 января 2012

Я думаю, что метод packetListener.listener(); выполняет некоторую сложную операцию, которая блокирует ваш пользовательский интерфейс.

Лучше создать поток для прослушивания пакета.т. е. используйте это так

 try {
    System.out.println("Hello");
    new Thread(new Runnable() {
        public void run() {
packetListener.listener();
            }
    }).start();         

        } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

Надеюсь, это поможет вам

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