關鍵是啟動一個線程控制顏色。代碼如下。
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站建設、網(wǎng)站設計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的撫順縣網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Signal extends Applet {
int width = 200, height = 240;
int w = 50, h = 50;
int x = (width - w) / 2, y1 = (height - h * 3) / 3, y2 = y1 + h, y3 = y2 + h;
Color c = Color.RED;
@Override
public void init() {
ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
exec.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
if (c == Color.RED) {
c = Color.YELLOW;
} else if (c == Color.YELLOW) {
c = Color.GREEN;
} else if (c == Color.GREEN) {
c = Color.RED;
}
repaint();
}
}, 5, 5, TimeUnit.SECONDS);
}
@Override
public void paint(Graphics g) {
setBackground(Color.white);
// all gray
g.setColor(Color.LIGHT_GRAY);
g.fillOval(x, y1, w, h);
g.fillOval(x, y2, w, h);
g.fillOval(x, y3, w, h);
if (c == Color.RED) {
g.setColor(Color.RED);
g.fillOval(x, y1, w, h);
} else if (c == Color.YELLOW) {
g.setColor(Color.YELLOW);
g.fillOval(x, y2, w, h);
} else if (c == Color.GREEN) {
g.setColor(Color.GREEN);
g.fillOval(x, y3, w, h);
}
}
}
按照你的要求,寫出的程序如下:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TrafficLight {
JFrame jf=new JFrame("Traffic Light");
JPanel jp=new JPanel();
JComboBox jcb=new JComboBox();
public TrafficLight(){
jcb.addItem("紅燈");
jcb.addItem("黃燈");
jcb.addItem("綠燈");
jcb.addItemListener(new JComboBoxListener());
jf.add(jcb,BorderLayout.NORTH);
jf.add(jp,BorderLayout.CENTER);
jf.setSize(400,400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new TrafficLight();
}
class JComboBoxListener implements ItemListener{
@Override
public void itemStateChanged(ItemEvent ie) {
Graphics g=jf.getGraphics();
if(ie.getItem().equals("紅燈")){
g.setColor(Color.RED);
g.fillOval(200, 200, 100, 100);
}else if(ie.getItem().equals("黃燈")){
g.setColor(Color.YELLOW);
g.fillOval(200, 200, 100, 100);
}else if (ie.getItem().equals("綠燈")){
g.setColor(Color.GREEN);
g.fillOval(200, 200, 100, 100);
}
}
}
}
//按回車鍵就可以
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Print {
public static void main(String[] args) {
JFrame jFrame = new JFrame ();
final JLabel jLabel = new JLabel ("按回車鍵!");
jFrame.setLayout(null);
jLabel.setBounds(80,50,500,80);
jFrame.add(jLabel);
jFrame.setSize(200, 200);
jFrame.setLocation(200, 300);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.addKeyListener(new KeyAdapter () {
int n = 0;
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_ENTER) {
n++;
if (n == 1)
jLabel.setText("綠");
else if (n == 2) {
jLabel.setText("紅");
} else if (n == 3) {
jLabel.setText("黃");
n = 0;
}
}
}
});
}
}
按照你的要求編寫的紅綠燈程序,你看看吧,比較簡單。
完整的程序如下:
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(f12)?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);?//?設置窗口可見
}
}大致幫你改了下,不知道符合不符合你的要求,有問題請追問
分享題目:java紅綠燈代碼 紅綠燈編程代碼
網(wǎng)址分享:http://www.rwnh.cn/article4/hhgeie.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、App設計、小程序開發(fā)、網(wǎng)站收錄、面包屑導航、
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)