关于java的小问题,怎么显示不了啊--程序想实现红黄绿三种路灯

来源:百度知道 编辑:UC知道 时间:2024/06/07 21:54:18
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class RadioButtonDemo extends JFrame implements ItemListener{
private JRadioButton jrbRed,jrbYellow,jrbGreen;
private ButtonGroup btg=new ButtonGroup();
private Light light;

public static void main(String[]args)
{
RadioButtonDemo frame=new RadioButtonDemo();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setSize(250,170);
frame.setVisible(true);
}
public RadioButtonDemo()
{
JPanel p1=new JPanel();
p1.setSize(200,200);
p1.setLayout(new FlowLayout(FlowLayout.CENTER));
light=new Light();
light.setSize(40,90);
p1.add(light);

JPanel p2=new JPanel();
p2.setLayout(new FlowLayout());
p2.add(jrbRed=new JRadioButton("Red",false));
p2.add(jrbYellow=new JRadioButton("Yellow",false));
p2.add(jrbGreen=new JRadi

哈哈,真逗。
你把paintComponent写成paintComponet了,怪不得什么都显示不出来。
还有,不要重写getPreferredSize,直接在构造函数中调用setPreferredSize(40,90)就可以了,在流式布局下,也不用再调用setSize了
Light类还可以再简单一点。
class Light extends JPanel{
private Color lightColor;
public Light(){
setPreferredSize(40,90);
lightColor=Color.green;
}
public turnOnRed(){
lightColor=Color.red;
repaint();
}
public turnOnGreen(){
lightColor=Color.green;
repaint();
}
public turnOnYellow(){
ligthColor=Color.yellow;
repaint();
}
public void paintComponent(Graphics g){
g.setColor(lightColor);
g.fillOval(10,35,20,20);
g.setColor(Color.black);
g.drawRect(5, 5, 30, 80);
g.drawOval(10, 10, 20, 20);
g.drawOval(10, 60, 20, 20);
}
}