如何在EDT(Swing)中一个接一个地执行多个方法

时间:2013-01-15 10:56:50

标签: java swing timing event-dispatch-thread

我有100个相同的JPanel,每个包含带有图标的JLabel和带有文本的JLabel。当某些事件发生时,我想将面板的图标和边框更改为2.5秒,然后将其更改回来。问题是,他们一起改变了,但当我尝试改变它们时 - 第一个图标被改变,然后在2或3秒内改变边界。以下是JPanel执行此操作的方法:

public void showPacketCame() {  
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            img.setIcon(blue);
            setBorder(BorderFactory.createLineBorder(new Color(54, 208, 243)));

            javax.swing.Timer tim = new javax.swing.Timer(2500, new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {                        
                    img.setIcon(onDark); 
                    setBorder(null);
                }
            });
            tim.setRepeats(false);
            tim.setDelay(2500);
            tim.start();
        }

    });
}

1 个答案:

答案 0 :(得分:-2)

这不是编码动画任务的恰当方式。请使用SwingWorker 为了这个目的。