更改间隔的面板颜色

Change panel color for an interval

我想创建一个程序,当单击按钮时,面板可能会或可能不会改变它的颜色。如果选择了错误的组合,我有一组面板会变成红色。但我只想让它变红大约 1-2 秒。之后,我将再次将面板背景更改为空。我希望每个面板在变红时都有自己的计时器。到目前为止,这是我的代码:

javax.swing.Timer timer = new javax.swing.Timer (250, new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        pnlArray [count - 2][count2].setBackground (Color.RED);
    };
});

pnlArray [count - 2][count2].setBackground (null);

此代码生成错误:local variables referenced from an inner class must be final or effectively final。显然,pnlArray[][] 不是最终面板。然而,Thread.sleep() 方法冻结了整个程序。我怎样才能做到这一点?

我使用 java.util.Timer 包找到了解决我的问题的方法。由于 Timer() class 需要 final 到 运行 run() 方法,我将 JPanel 分配给了一个 final 变量。然后我在第一次延迟结束后取消了计时器。

final JPanel pnlChange = pnlArray [count - 2][count2];
pnlChange.setBackground (Color.RED);

java.util.Timer timer = new java.util.Timer ();
TimerTask task = new TimerTask () {
    int seconds = 4;
    int divisor = 0;

    @Override
    public void run() {

            divisor++;

            if (divisor % seconds == 0) {
                timer.cancel ();
                pnlChange.setBackground (null);
            }
    }
};

timer.schedule(task, 0, 1000);