更改不同类的变量

ez4*_*ick 0 java colors

我试图让一个按钮调用另一个类中的方法来更新某些东西的颜色,但它没有按照我的预期运行.问题是颜色改变一次但从未改变过.

这是发生变化的文件:

public class Status
{
    //initial conditions
    Color pedLightColor = Color.RED;
    Color warnLightsColor = Color.GREEN;
    Boolean GatesUp= true;
    Color drawbridgeColor = Color.green;    
    public Status()
    {       
    }

    public Color getPedestrianStatus()
    {
       return pedLightColor;
    }

    public void setPedestrianColor(Color c)
    {
        if(c.equals(Color.RED))
        {
           pedLightColor=Color.green;
           System.out.println("Pedestrian Light color changed to " + pedLightColor);
        }
        else
        {
               pedLightColor=Color.red;
               System.out.println("Pedestrian Light color changed to " + pedLightColor);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它被称为如下:

pedButton.addActionListener(new ActionListener() 
{
        @Override
        public void actionPerformed(ActionEvent event) 
        {
           System.out.println("Control Unit/Pedestrian Button Clicked");
           Status status = new Status();
           status.setPedestrianColor(status.getPedestrianStatus());
           System.out.println(status.getPedestrianStatus());
        }
});
Run Code Online (Sandbox Code Playgroud)

目前我相信我通过调用setPedestrianColor()方法以当前颜色作为参数来更改颜色.但是我不确定为什么一旦你按下按钮第二次颜色应该是绿色所以它应该变回红色,但事实并非如此.任何有关我出错的建议都表示赞赏.

Bri*_*ian 5

您的Status对象需要是全局的或以不同的方式实例化.颜色正在改变,然后在每次actionPerformed调用后抛弃对象.所以它永远不会从红色变为绿色.