我有100个相同的JPanel,每个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();
        }

    });
}

最佳答案

这不是编码动画任务的合适方法。请使用SwingWorker
以此目的。

关于java - 如何在EDT(Swing)中一个接一个地执行几种方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14336223/

10-10 18:30