1

私は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();
        }

    });
}
4

1 に答える 1

-2

これは、アニメーション タスクをコーディングする適切な方法ではありません。そのためにはSwingWorkerをご利用ください 。

于 2013-01-15T10:59:53.290 に答える