我正在尝试制作一个JFrame,并且当用户单击一个按钮时,JFrame中显示的圆圈每秒都会更改颜色。但是目前,我无法更改存储在变量中的当前在窗口中显示的颜色。

Color lastColor = Color.ORANGE;
g.setColor(lastColor);

smallerButton.addActionListener(new ActionListener()
{
      public void actionPerformed(ActionEvent e)
      {
            String action = e.getActionCommand();
            if (action.equals("Flash")) {

                  //when clicked change color of the circle listed above.
                  //or change the variable of last color.
            }
      }});
     }
};


这不是全部代码。我要尝试做的是,当用户单击按钮时,变量lastColor然后更改为让我们说GRAY。我在尝试执行此操作时遇到了麻烦,因为当我将变量名称放入动作侦听器时,它找不到变量lastColor来更改为新变量。如何在动作监听器中更改变量lastColor

最佳答案

您必须将lastColor声明为类的成员变量。您正在本地创建它,因此clickListener无法看到它。

编辑:

public class foo(){
Color lastColor;

public foo(){
lastColor = Color.ORANGE();
}

public void paintFoo(){
 // do your paint stuff here and access lastColor
}

}

09-27 19:44