请帮我看下这个JAVA的程序(简易红绿灯)

请帮我看下这个JAVA的程序(简易红绿灯),第1张

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程序“信号灯”问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10165435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存