java风扇(三个风扇-可开始、暂停、重置、加速、减速)
来源:互联网 发布:电视猫直播软件 编辑:程序博客网 时间:2024/04/30 19:07
代码内含有详细的注释,请读者自行观看,浅显易懂
所以我就不解释了,直接上代码
package homework; //自行建立packageimport java.awt.event.*; import javax.swing.*; import java.awt.*; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; //author=HuangLin(BUPT)public class Three_Fan extends Frame implements ActionListener{ MyPanel clockPanel; //the fan is on or off boolean flag1 = false; boolean flag2 = false; boolean flag3 = false; int sign = 1;//延时的设计,使得三个风扇和一个风扇的转速保持一致 //the angle of each fan(start) int [] angle1 = {90,90,90}; int [] angle2 = {-90, -90, -90}; int [] angle3 = {-180, -180, -180}; int [] angle4 = {0, 0,0}; //the speed of each fan.speed>0 or <0 represent direction int [] speed = {3,3,3}; final Lock l = new ReentrantLock(); Button start1 = new Button("Start"); Button stop1 = new Button("Stop"); Button reset1 = new Button("Reset"); Button up_speed1 = new Button("UpSpeed"); Button down_speed1 = new Button("DownS"); Button start2 = new Button("Start"); Button stop2 = new Button("Stop"); Button reset2 = new Button("Reset"); Button up_speed2 = new Button("UpSpped"); Button down_speed2 = new Button("DownS"); Button start3 = new Button("start"); Button stop3 = new Button("Stop"); Button reset3 = new Button("Reset"); Button up_speed3 = new Button("UpSpeed"); Button down_speed3 = new Button("DownS"); Button start_all = new Button("Start_All"); Button stop_all = new Button("Stop_All"); Button ready_go = new Button("Ready_Go"); //创建三个进程 Run A = new Run(); Run B = new Run(); Run C = new Run(); Three_Fan() { //draw panel clockPanel = new MyPanel(); clockPanel.setLayout(null); start1.setBounds(5, 30, 50, 40); stop1.setBounds(55, 30, 50, 40); reset1.setBounds(105, 30, 50, 40); up_speed1.setBounds(155, 30, 50, 40); down_speed1.setBounds(205, 30, 50, 40); start2.setBounds(305, 30, 50, 40); stop2.setBounds(355, 30, 50, 40); reset2.setBounds(405, 30, 50, 40); up_speed2.setBounds(455, 30, 50, 40); down_speed2.setBounds(505, 30, 50, 40); start3.setBounds(605, 30, 50, 40); stop3.setBounds(655, 30, 50, 40); reset3.setBounds(705, 30, 50, 40); up_speed3.setBounds(755, 30, 50, 40); down_speed3.setBounds(805, 30, 50, 40); start_all.setBounds(125, 300, 120, 40); stop_all.setBounds(475, 300, 120, 40); ready_go.setBounds(775, 300, 100, 40); //action listener start1.addActionListener(this); stop1.addActionListener(this); reset1.addActionListener(this); up_speed1.addActionListener(this); down_speed1.addActionListener(this); start2.addActionListener(this); stop2.addActionListener(this); reset2.addActionListener(this); up_speed2.addActionListener(this); down_speed2.addActionListener(this); start3.addActionListener(this); stop3.addActionListener(this); reset3.addActionListener(this); up_speed3.addActionListener(this); down_speed3.addActionListener(this); start_all.addActionListener(this); stop_all.addActionListener(this); ready_go.addActionListener(this); //add add(start1); add(stop1); add(reset1); add(up_speed1); add(down_speed1); add(start2); add(stop2); add(reset2); add(up_speed2); add(down_speed2); add(start3); add(stop3); add(reset3); add(up_speed3); add(down_speed3); add(start_all); add(stop_all); add(ready_go); add(clockPanel); } //action listener function public void actionPerformed(ActionEvent e) { if(e.getSource() == ready_go) { A.start(); B.start(); C.start(); } else if(e.getSource() == start1) { flag1 = true; } else if(e.getSource() == stop1) { flag1 = false; } else if(e.getSource() == reset1) { angle1[0] = 90; angle2[0] = -90; angle3[0] = -180; angle4[0] = 0; } else if(e.getSource()==up_speed1){ speed[0]+=1; } else if(e.getSource()==down_speed1){ speed[0]-=1; } else if(e.getSource() == start2) { flag2 = true; } else if(e.getSource() == stop2) { flag2 = false; } else if(e.getSource() == reset2) { angle1[1] = 90; angle2[1] = -90; angle3[1] = -180; angle4[1] = 0; } else if(e.getSource()==up_speed2){ speed[1]+=1; } else if(e.getSource()==down_speed2){ speed[1]-=1; } else if(e.getSource() == start3) { flag3 = true; } else if(e.getSource() == stop3) { flag3 = false; } else if(e.getSource() == reset3) { angle1[2] = 90; angle2[2] = -90; angle3[2] = -180; angle4[2] = 0; } else if(e.getSource()==up_speed3){ speed[2]+=1; } else if(e.getSource()==down_speed3){ speed[2]-=1; } else if(e.getSource() == start_all) { flag1 = true; flag2 = true; flag3 = true; } else if(e.getSource() == stop_all) { flag1 = false; flag2 = false; flag3 = false; } } class MyPanel extends JPanel { public void paint(Graphics g) { //第一个 g.setColor(Color.yellow); g.fillArc(20, 40, 200, 200, angle1[0], -30); g.fillArc(20, 40, 200, 200, angle2[0], -30); g.fillArc(20, 40, 200, 200, angle3[0], -30); g.fillArc(20, 40, 200, 200, angle4[0], -30); //第二个 g.setColor(Color.red); g.fillArc(320, 40, 200, 200, angle1[1], -30); g.fillArc(320, 40, 200, 200, angle2[1], -30); g.fillArc(320, 40, 200, 200, angle3[1], -30); g.fillArc(320, 40, 200, 200, angle4[1], -30); //第三个 g.setColor(Color.green); g.fillArc(620, 40, 200, 200, angle1[2], -30); g.fillArc(620, 40, 200, 200, angle2[2], -30); g.fillArc(620, 40, 200, 200, angle3[2], -30); g.fillArc(620, 40, 200, 200, angle4[2], -30); } } //Main public static void main(String[] args) { Three_Fan window = new Three_Fan(); window.addWindowListener(new WindowAdapter() //为了关闭窗口 { public void windowClosing(WindowEvent e) { System.exit(0); } }); window.setBounds(400, 200, 900, 350); window.setTitle("My_Fan(2013211842-黄麟)"); window.setVisible(true); window.setLayout(null); window.setResizable(false); } //paint repaint void lfl(int state) { angle1[state] += speed[state]; angle2[state] += speed[state]; angle3[state] += speed[state]; angle4[state] += speed[state]; try { Thread.sleep(100/sign); }catch(Exception e) { e.printStackTrace(); } repaint(); } //Thread private class Run extends Thread { public void run() { while (true) { l.lock(); if(flag1 == false && flag2 == false && flag3 == false) { sign = 1; continue ; } else if(flag1 == false && flag2 == false && flag3 == true) { sign = 1; lfl(2); } else if(flag1 == false && flag2 == true && flag3 == false) { sign = 1; lfl(1); } else if(flag1 == false && flag2 == true && flag3 == true) { sign = 2; lfl(2); lfl(1); } else if(flag1 == true && flag2 == false && flag3 == false) { sign = 1; lfl(0); } else if(flag1 == true && flag2 == false && flag3 == true) { sign = 2; lfl(2); lfl(0); } else if(flag1 == true && flag2 == true && flag3 == false) { sign = 2; lfl(1); lfl(0); } else if(flag1 == true && flag2 == true && flag3 == true) { sign = 3; lfl(2); lfl(1); lfl(0); } l.unlock(); } } } }
0 0
- java风扇(三个风扇-可开始、暂停、重置、加速、减速)
- 自定义View圆形加载器、变色、加速减速、开始暂停
- 风扇(FAN)生产厂商
- 风扇调速
- 散热风扇
- cool device(风扇)的注册
- 自定义View带箭头的圆环,加速 减速 暂停 变色
- 自定义View带箭头的圆环,加速 减速 暂停 变色
- Java 风扇:编写程序,显示3个风扇,用控制按钮开动和停止风扇。可以同时开动和停止3个风扇,也可以分别开动和停止每一个风扇
- 玩家堂2009年巨献,27款12CM风扇大型横评(1)--- 风扇参数
- 加速,减速..............
- 关于服务器的风扇
- 凌晨的电脑风扇
- 本本风扇出问题了
- 散热器 : 风扇轴承
- 空调 or 风扇
- 电脑风扇静音法
- 电脑风扇轴承介绍
- 双击修改
- Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:错误
- 使用spring连接及操作mongodb3.0
- (四)C语言输入函数
- mysql like 是否会用到索引
- java风扇(三个风扇-可开始、暂停、重置、加速、减速)
- WL(Wear leveling)磨损平衡
- 多渠道共存打包(三)
- linux _用户与文件管理
- jvm 类加载机制双亲委托机制
- Chorme dev tools的小技巧
- ubuntu系统两台机器互传文件
- mysql运维与分析--mysql用户管理(基础)
- D3d9c的固定渲染管道(fixed function pipeline)与可编程管道(programmable function pipeline)的异同点