repaint()方法未按预期运行

时间:2014-03-29 21:12:38

标签: java repaint

我有以下类,DrawStatus负责制作绘图,将其添加到面板,然后将该面板添加到框架内的另一个面板。我遇到的这个问题是我有一个按钮,并且该按钮的actionlistener调用了changeWarningLightColor()方法,在这个方法中,warnColor应该改变然后改变图形中矩形的颜色,但颜色永远不会改变。我已经通过我的print语句验证了此方法已被调用,但绘图不会更新/重新绘制,因为颜色不会更改。我想知道我是不是正确使用了repaint()方法,或者正确的方法来实现我想要的东西。

public class DrawStatus extends JPanel{
     Status status = new Status();
     Color pedLights=Color.RED;
     Color warnColor=Color.GREEN;
     JPanel panel;

public DrawStatus(){

}
@Override
protected void paintComponent(Graphics g){
    super.paintComponent(g);

    int height = getHeight(); 
    int width = getWidth();
    int midpointX = ((width-800)+width-400)/2;

    g.setColor(warnColor);
    g.fillRect(midpointX-45, (height-300)+5, 15, 15);
    g.fillRect(midpointX-45, (height-400)-18, 15, 15);
    g.fillRect(midpointX+30, (height-300)+5, 15, 15);
    g.fillRect(midpointX+30, (height-400)-18, 15, 15);

}


public void changeWarningLightColor(){
    System.out.println("change color method called");
    if(warnColor.equals(Color.GREEN)){
        warnColor=Color.RED;
        repaint();

    }
    else{
        warnColor=Color.GREEN;
        repaint();  
    }
}
}

0 个答案:

没有答案