パラメータに渡される制御のバックグラウンドを変更できる静的クラスを作成しようとしています。だから私はこれを達成しました:
public static void wrong(final Component component) {
component.setBackground(Color.RED);
Timer timer = new Timer(2, wrongAction);
wrongAction = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int green = component.getBackground().getGreen();
int blue = component.getBackground().getBlue();
component.setBackground(new Color(255, green + 1, blue + 1));
if (component.getBackground() == Color.WHITE) {
timer.stop();
}
}
};
timer.start();
}
そして、私はエラーがあります:
Cannot refer to a non-final variable timer inside an inner class defined in a different method
もちろん、タイマーをfinalに変更することはできますが、それを行うとメソッドは機能しなくなります。
私はそれをグーグルで検索し、他のスタックオーバーフローのトピックで答えを見つけようとしましたが、何も役に立ちませんでした。
よろしくお願いします!