обновить текстовое поле после определенного интервала - PullRequest
0 голосов
/ 18 февраля 2010

Я обновляю текстовое поле через определенное время.

Вот мой код:

ActionListener task = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                    tip1.setText(ad1.tip1());
                    tip2.setText(ad1.tip2());
                    tip3.setText(ad1.tip3());
                } catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
          }
    };

        new javax.swing.Timer(1000, task).start();

мое приложение очень медленно приспосабливается с помощью этого кода.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2010

Редактировать: Это неправильное решение.

Вы должны бросить его на EDT. Вы не должны изменять свой интерфейс Swing ни в каком потоке, кроме EDT.

try {
    SwingUtilities.invokeLater(new Runnable(){
        public void run() {
            tip1.setText(ad1.tip1());
            tip2.setText(ad1.tip2());
            tip3.setText(ad1.tip3());
            } catch (Exception e1) {
                e1.printStackTrace();
            }
    });
}

У Sun есть несколько замечательных учебных пособий на эту тему.

0 голосов
/ 18 февраля 2010

Код таймера выглядит подозрительно.Не зная дополнительных подробностей, единственный возможный виновник -

update.addActionListener(task);

Что такое update и как часто будет запускаться слушатель / задание (в дополнение к выполнению, запускаемому через таймер)?

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