Использование SwingWorker и Timer для отображения времени на этикетке?

Я хочу, чтобы часы показывали текущее время и обновлялись каждую секунду. Я использую следующий код:

int timeDelay = 1000;
ActionListener time;
time = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent evt) {
            timeLabel.setText(DateTimeUtil.getTime()); 
            /*timeLabel is a JLabel to display time,
            getTime() is samll static methos to return formatted String of current time */
        }
    };
SwingWorker timeWorker = new SwingWorker() {

        @Override
        protected Object doInBackground() throws Exception {

            new Timer(timeDelay, time).start();
            return null;
        }
    };
timeWorker.execute();

Я хочу обновить текст timeLabelв другом потоке, отличном от EDT.
Я делаю это правильно? Любой другой лучший способ?
Также для информации я добавил timeLabelврасширеннуюJPanel, которая содержит несколько подобных утилит и вызывается в другомMainJFrame.

5
задан Hovercraft Full Of Eels 24 March 2012 в 20:19
поделиться