Как обновить jLabel в java swing? - PullRequest
0 голосов
/ 20 февраля 2012

Я подключаюсь к XMPP-серверу, и в своей форме я хотел бы проинформировать пользователя о текущем состоянии работы, то есть «Подключение к XMPP-серверу», «Прохождение аутентификации» и т. Д. У меня есть следующий код в Java, но это показывает только последнее состояние, которое «Успешно подключено».

private void jLoginActionPerformed(java.awt.event.ActionEvent evt) {
        Connection connection=new XMPPConnection("example.com");
        jStatusBar.setText("Connecting to XMPP Server ...");
        connection.connect();
        jStatusBar.setText("Passing authentication ...");
        connection.login(username, password);
        jStatusBar.setText("Successfully connected.");

}

Как заставить java обновлять ярлыки?

1 Ответ

0 голосов
/ 20 февраля 2012

Вы можете выполнить вход в другой поток (не в EDT), используя SwingWorker, и обновить строку состояния в EDT (используя SwingUtilities.invokeLater).Ваша реализация будет выглядеть примерно так:

SwingWorker<Void, Void> loginTask = new SwingWorker<Void, Void>(){

        protected void doInBackground(){
            Connection connection=new XMPPConnection("example.com");
            message( "Connecting to XMPP Server" );
            connection.connect();
            message( "Passing authentication ..." );
            connection.login(username, password);
            message( "Successfully connected." );
        }

        private void message(final String text){
             SwingUtilities.invokeLater(new Runnable(){
                 jStatusBar.setText( text );
             });
        }
    }

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