Java 代码I';我写的不是';点击我的按钮后,我不会改变红色。在这种情况下我做错了什么?

Java 代码I';我写的不是';点击我的按钮后,我不会改变红色。在这种情况下我做错了什么?,java,Java,提示:设计并实现一个应用程序,该应用程序绘制交通灯并使用按钮更改灯的状态。从JPanel类派生图形表面,并使用另一个面板来组织图形表面和按钮 如果按钮没有将颜色从红色-->黄色-->绿色更改,那么我做错了什么?如果是这样的话,有人能给我一些未来的建议来解决这些问题吗?我与JPanel的合作不多…可能会将count初始化为初始状态,如0、1或2。并调用paintComponent:PThank you@Pshemo。。。我猜问题是因为我无法将另一个形状放在另一个形状上?@vk3105:你永远不会直

提示:设计并实现一个应用程序,该应用程序绘制交通灯并使用按钮更改灯的状态。从JPanel类派生图形表面,并使用另一个面板来组织图形表面和按钮


如果按钮没有将颜色从红色-->黄色-->绿色更改,那么我做错了什么?如果是这样的话,有人能给我一些未来的建议来解决这些问题吗?我与JPanel的合作不多…

可能会将count初始化为初始状态,如0、1或2。并调用paintComponent:PThank you@Pshemo。。。我猜问题是因为我无法将另一个形状放在另一个形状上?@vk3105:你永远不会直接“调用paintComponent”。JVM将其作为回调方法调用。但是,您可以建议通过调用
repaint()
调用它。
import javax.swing.JFrame;
public class TrafficLight{
    public static void main(String[]args){
        JFrame frame = new JFrame("Traffic Light");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        TrafficLightP panel = new TrafficLightP();

        frame.getContentPane().add(new TrafficLightP());
        frame.pack();
        frame.setVisible(true);


    }
}    




import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class TrafficLightP extends JPanel {
    private int count;
    private JButton button;
    private JLabel label;

    public TrafficLightP(){
        /*
        Traffic light color coded as
        1. Red
        2. Yellow
        3. Green
        */

        button = new JButton ("Button!");
        button.addActionListener(new ButtonListener());

        label = new JLabel("Traffic Light Button");

        add(button);
        add(label);

        setPreferredSize(new Dimension(400,300));
        setBackground(Color.gray);
    }
    private class ButtonListener implements ActionListener{
        public void actionPerformed(ActionEvent Event){
            //Possible area where it messed up..?
            count++;
            count = count%3;
        }
    }
    public void paintComponent (Graphics g){
        TrafficLightP.super.paintComponent (g);
        if (count == 0){
            g.setColor(Color.red);
            g.fillOval (20, 30, 50, 50);
        }
        else if (count == 1){
            g.setColor(Color.yellow);
            g.fillOval (20, 30, 50, 50);
        }
        else if (count == 2){
            g.setColor(Color.green);
            g.fillOval (20, 30, 50, 50);
        }

        g.setColor(Color.white);
    }
}