import javaawtBorderLayout;
import javaawtGraphics;
import javaawtColor;
import javaawtGridLayout;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaxswingButtonGroup;
import javaxswingJPanel;
import javaxswingJFrame;
import javaxswingJRadioButton;
public class lightP1 extends JFrame {
private JRadioButton jrbRed;
private JRadioButton jrbYellow;
private JRadioButton jrbGreen;
private ButtonGroup gb = new ButtonGroup();
private myPanel mp = new myPanel();
public lightP1 () {
setTitle("TrafficLight");
JPanel jpRadioButtons = new JPanel();
jpRadioButtonssetLayout(new GridLayout(1, 3));
jrbRed = new JRadioButton("Red");
jrbYellow = new JRadioButton("Yellow");
jrbGreen = new JRadioButton("Green");
gbadd(jrbRed);
gbadd(jrbYellow);
gbadd(jrbGreen);
jrbRedaddActionListener(mp);
jrbYellowaddActionListener(mp);
jrbGreenaddActionListener(mp);
jpRadioButtonsadd(jrbRed);
jpRadioButtonsadd(jrbYellow);
jpRadioButtonsadd(jrbGreen);
this getContentPane()add(jpRadioButtons, BorderLayoutSOUTH);
getContentPane()add(mp);
}
/ Main method /
public static void main(String[] args) {
lightP1 frame = new lightP1();
framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
framesetSize(300, 250);
framesetVisible(true);
}
class myPanel extends JPanel implements ActionListener{
private int lightColor = 0;//该值保存的是color值,值为1时表示为红色,为2时为**,为3时为绿色
protected void paintComponent(Graphics g) {
superpaintComponent(g);
switch(lightColor){
case 0://默认全部灯都为黑色
gdrawRect(130, 25, 40, 120);
gfillOval(135, 30, 30, 30);
gfillOval(135, 70, 30, 30);
gfillOval(135, 110,30, 30);
break;
case 1://红色灯亮
gdrawRect(130, 25, 40, 120);
gsetColor(ColorRED);
gfillOval(135, 30, 30, 30);
gsetColor(ColorBLACK);
gfillOval(135, 70, 30, 30);
gfillOval(135, 110,30, 30);
break;
case 2://**灯亮
gdrawRect(130, 25, 40, 120);
gsetColor(ColorBLACK);
gfillOval(135, 30, 30, 30);
gsetColor(ColorYELLOW);
gfillOval(135, 70, 30, 30);
gsetColor(ColorBLACK);
gfillOval(135, 110,30, 30);
break;
case 3://绿色灯亮
gdrawRect(130, 25, 40, 120);
gsetColor(ColorBLACK);
gfillOval(135, 30, 30, 30);
gsetColor(ColorBLACK);
gfillOval(135, 70, 30, 30);
gsetColor(ColorGREEN);
gfillOval(135, 110,30, 30);
break;
default:break;
}
}
public void actionPerformed(ActionEvent e){
if(egetSource() == jrbRed){ lightColor = 1;}
else if(egetSource() == jrbYellow) {lightColor = 2;}
else if(egetSource() == jrbGreen) {lightColor = 3;}
repaint();
}
}
}
时间太匆忙,上面的程序还可以再进行优化的。当功能是可以实现的。
package comifengtest;
import javaawtBorderLayout;
import javaawtCanvas;
import javaawtChoice;
import javaawtColor;
import javaawtFrame;
import javaawtGraphics;
import javaawtLabel;
import javaawteventItemEvent;
import javaawteventItemListener;
import javaawteventWindowAdapter;
import javaawteventWindowEvent;
public class SingalCanvas extends Canvas {
private static final long serialVersionUID = -5305107739145145221L;
int red, green, yellow, x, y, r;
SingalCanvas() {
setBackground(ColorCYAN);
}
public void setRed(int r) {
red = r;
}
public void setGreen(int g) {
green = g;
}
public void setYellow(int y) {
yellow = y;
}
public void setPosition(int x, int y) {
thisx = x;
thisy = y;
}
public void setRadius(int r) {
thisr = r;
}
public void paint(Graphics g) {
if (red == 1) {
gsetColor(Colorred);
} else if (green == 1) {
gsetColor(Colorgreen);
} else if (yellow == 1) {
gsetColor(Coloryellow);
}
gfillOval(x, y, 2 r, 2 r);// 从x,y位置处画一个实心的圆
}
class SignalFrame extends Frame implements ItemListener
{
private static final long serialVersionUID = 7614643759272879177L;
Choice choice;// 菜单选项
SingalCanvas signal = null;
String itemRed = "Red", itemYellow = "Yellow", itemGreen = "Green";
public SignalFrame(SingalCanvas one)
{
choice = new Choice();
choiceadd(itemRed);// 增加选项
choiceadd(itemYellow);
choiceadd(itemGreen);
add(choice, BorderLayoutNORTH);
try {
// Class cs = ClassforName("SingalCanvas");// 调用,路径
signal = one;
add(signal, BorderLayoutCENTER);
} catch (Exception e) {
add(new Label("SingalCanvas has no Instance"), BorderLayoutCENTER);
}
setBounds(100, 100, 360, 300);
setVisible(true);
validate();
choiceaddItemListener(this);
choiceselect(0);
new Thread(){
public void run() {
while(true){
for (int i=0;i<choicegetItemCount();i++)
{
Systemoutprintln(i);
choiceselect(i);
String item = choicegetSelectedItem(); // choice返回被选中的条目
int w = signalgetBounds()width;
int h = signalgetBounds()height;
int m = Mathmin(w, h);
signalsetRadius(m / 6);
if (itemequals(itemRed))
{
if (signal != null) {
signalsetRed(1);
signalsetYellow(0);
signalsetGreen(0);
signalsetPosition(w / 3, 0);
signalrepaint();
}
}
else if (itemequals(itemYellow))
{
if (signal != null) {
signalsetRed(0);
signalsetYellow(1);
signalsetGreen(0);
signalsetPosition(w / 3, h / 3);
signalrepaint();
}
}
else if (itemequals(itemGreen))
{
if (signal != null)
{
signalsetRed(0);
signalsetYellow(0);
signalsetGreen(1);
signalsetPosition(w / 3, 2 h / 3);
signalrepaint();
}
}
try {
Threadsleep(2000);
} catch (InterruptedException e) {
eprintStackTrace();
}
}
}
};
}start();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Systemexit(0);
}
});
}
public void itemStateChanged(ItemEvent e)
{
String item = choicegetSelectedItem(); // choice返回被选中的条目
int w = signalgetBounds()width;
int h = signalgetBounds()height;
int m = Mathmin(w, h);
signalsetRadius(m / 6);
if (itemequals(itemRed))
{
if (signal != null) {
signalsetRed(1);
signalsetYellow(0);
signalsetGreen(0);
signalsetPosition(w / 3, 0);
signalrepaint();
}
}
else if (itemequals(itemYellow))
{
if (signal != null) {
signalsetRed(0);
signalsetYellow(1);
signalsetGreen(0);
signalsetPosition(w / 3, h / 3);
signalrepaint();
}
}
else if (itemequals(itemGreen))
{
if (signal != null)
{
signalsetRed(0);
signalsetYellow(0);
signalsetGreen(1);
signalsetPosition(w / 3, 2 h / 3);
signalrepaint();
}
}
}
}
public void crate(SingalCanvas one)
{
SignalFrame frame = new SignalFrame(one);
framesetTitle("信号灯");
}
public static void main(String[] arg){
SingalCanvas one = new SingalCanvas();
onecrate(one);
}
}
以上就是关于请帮我看下这个JAVA的程序(简易红绿灯)全部的内容,包括:请帮我看下这个JAVA的程序(简易红绿灯)、JAVA程序“信号灯”问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)