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