我有以下类,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();
}
}
}