用java编写交通信号灯

用java编写交通信号灯,第1张

按照你的要求编写的红绿灯程序,你看看吧,比较简单。

完整的程序如下:

import java.awt.*

import java.awt.event.*

import javax.swing.*

import java.awt.Graphics

public class TrafficLight extends JFrame{

JRadioButton jrbYellow,jrbGreen,jrbRed

int flag=0

jpNewPanel jpNewPanel

public static void main(String[] args){

TrafficLight frame=new TrafficLight()

frame.setSize(500,200)

frame.setLocationRelativeTo(null)

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

frame.setTitle("TrafficLight")

frame.setVisible(true)

}

public TrafficLight(){

jpNewPanel=new jpNewPanel()

add(jpNewPanel,BorderLayout.CENTER)

JPanel jpRadioButtons=new JPanel()

jpRadioButtons.setLayout(new GridLayout(1,3))

jpRadioButtons.add(jrbYellow=new JRadioButton("Yellow"))

jpRadioButtons.add(jrbGreen=new JRadioButton("Green"))

jpRadioButtons.add(jrbRed=new JRadioButton("Red"))

add(jpRadioButtons,BorderLayout.SOUTH)

ButtonGroup group=new ButtonGroup()

group.add(jrbYellow)

group.add(jrbGreen)

group.add(jrbRed)

jrbYellow.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

flag=2

jpNewPanel.repaint()

}

})

jrbGreen.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

flag=1

jpNewPanel.repaint()

}

})

jrbRed.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

flag=3

jpNewPanel.repaint()

}

})

}

class jpNewPanel extends JPanel{

protected void paintComponent(Graphics g){

super.paintComponent(g)

g.drawRect(0,0,40,100)

g.drawOval(10,10,20,20)

g.drawOval(10,40,20,20)

g.drawOval(10,70,20,20)

if(flag==1){

g.setColor(Color.GREEN)

g.fillOval(10, 70, 20, 20)

}

else if(flag==2){

g.setColor(Color.YELLOW)

g.fillOval(10, 40, 20, 20)

}

else if(flag==3){

g.setColor(Color.RED)

g.fillOval(10, 10, 20, 20)

}

}

}

}

import java.awt.Color

import java.awt.Container

import java.awt.Dimension

import java.awt.FlowLayout

import java.awt.Graphics

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JPanel

public class Way extends JPanel {

JButton red

public Way() {

red= new JButton("换灯")

setBackground(Color.yellow)

setSize(new Dimension(320, 260))

setPreferredSize(new Dimension(320, 260) )

JPanel btnPanel = new JPanel()

btnPanel.setLayout(new FlowLayout())

red.setLayout(new FlowLayout())// 将单选按钮加入按钮面板

btnPanel.add(red)

add(red)

}

private void lightRed(Graphics g) {

g.setColor(Color.red)

g.fillOval(getWidth() / 2, 30, 15, 15)

g.setColor(Color.black)

g.fillOval(getWidth() / 2, 50, 15, 15)

g.fillOval(getWidth() / 2, 70, 15, 15)

}

private void lightYellow(Graphics g) {

g.setColor(Color.yellow)

g.fillOval(getWidth() / 2, 50, 15, 15)

g.setColor(Color.black)

g.fillOval(getWidth() / 2, 30, 15, 15)

g.fillOval(getWidth() / 2, 70, 15, 碧雹差15)

}

private void lightGreen(Graphics g) {

g.setColor(Color.green)

g.fillOval(getWidth() / 2, 70, 15, 15)

g.setColor(Color.black)

g.fillOval(getWidth() / 2, 30, 15, 15)

g.fillOval(getWidth() / 2, 50, 15, 15)

}

protected void paintComponent(Graphics g) {

super.paintComponents(g)

Way a = new Way()

g.clearRect(0, 0, getWidth(), getHeight())

g.drawRect(getWidth() / 2, 30, 30, 80)

red.addActionListener(new ActionListener() {

int f1 = 0

public void actionPerformed(ActionEvent e) {

Graphics g = getGraphics()

switch (f1) {

case 0:

a.lightRed(g)

break

case 1:

a.lightYellow(g)

break

case 2:

a.lightGreen(g)

break

}

f1++

if(f1>2) f1=0

}

})

}

public static void main(String[] args) {

JFrame fr = new JFrame("邮件界面模拟")

fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) // 点击x结束程序

Container contentPane = fr.getContentPane()

// 得到窗口内容面板

contentPane.add(new Way())

fr.pack()

fr.setVisible(true) // 设置窗口可见

}

}大致帮你改了下,不知道符合不符悔皮合你的要求,肆则有问题请追问


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

原文地址: http://outofmemory.cn/yw/12403496.html

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

发表评论

登录后才能评论

评论列表(0条)

保存