Java Swing类 颜色、按键状态判断例子代码

1package rom; 2 3import java.awt.BorderLayout; 4import java.awt.Color; 5import java.awt.event.ActionEvent; 6import java.awt.event.ActionListener; 7 8import javax.swing.JButton; 9import javax.swing.JFrame; 10import javax.swing.JPanel; 11import javax.swing.JTextArea; 12import javax.swing.plaf.SliderUI; 13 14/* 15 * 写一个会自动变色的按键 16 */ 17public class Demo4 extends JFrame implements ActionListener,Runnable{ 18 JPanel jPanel; 19 JButton jButton; 20 Thread thread; 21 static boolean off_on; 22 int h; 23 int s; 24 int b; 25 Color color1 = Color.YELLOW; //黄色 26 // 黑色 灰色 灰色 蓝色 青色 27 Color colors_data [][] = {{color1,Color.BLACK,Color.GRAY,Color.gray,Color.BLUE,Color.CYAN 28 ,Color.DARK_GRAY//深灰色 29 ,Color.GREEN //绿色 30 ,Color.LIGHT_GRAY //浅灰 31 ,Color.MAGENTA //品红 32 ,Color.ORANGE //橙色 33 ,Color.PINK //粉色 34 ,Color.RED //红色 35 ,Color.WHITE} //白色 36 ,{Color.getHSBColor(h,s,b)}}; //使用HSB拾色器模式拾取色彩,可以直接百度HSB了解 37 38 public Demo4(String name) { 39 // TODO Auto-generated constructor stub 40 super(name); 41 thread = new Thread(this); //创建一个线程 42 jPanel = new JPanel(); //添加区域面板 43 jButton = new JButton("手动换颜色"); //添加按键 44 jPanel.setSize(180, 180); //设置区域面板快大小 45 jPanel.add(jButton,BorderLayout.CENTER); //添加按键并且设置按键位置在中央显示 46 add(jPanel,BorderLayout.CENTER); //添加Jpanel布局到jframe中,并且将位置设置在中央 47 jButton.addActionListener(this); //按键监听 48 setSize(200, 200); // 设置大小 49 setVisible(true); //显示框体 50 validate(); //刷新验证 51 } 52 53 @Override 54 public void actionPerformed(ActionEvent e) { 55 56 // TODO Auto-generated method stub 57 if (e.getActionCommand() == "手动换颜色") { //判断按键是否按下手动换颜色 58 off_on = false; //修改布尔值 59 h = (int)(Math.random()*361); 60 s = (int)(Math.random()*101); 61 b = (int)(Math.random()*101); 62 int i = (int)(Math.random()*2); 63 int j = (int)(Math.random()*2); 64 jButton.setBackground(colors_data[i][(int)(Math.random()*(colors_data[i].length))]); //设置按键背景颜色 65 jButton.setForeground(colors_data[j][(int)(Math.random()*(colors_data[j].length))]); //设置按键文本颜色 66 jButton.setText("自动换颜色"); //修改文本内容 67 } 68 else if (e.getActionCommand() == "自动换颜色") { //判断按键文本内容 69 off_on = true; 70 jButton.setText("手动换颜色"); //修改按键文本 71 if(!(thread.isAlive())) { //判断线程是否关闭了,如果没有线程就创建一个新线程 72 thread = new Thread(this); //创建新线程 73 } 74 thread.start(); //启动线程 75 } 76 } 77 public static void main(String[] args) { 78 new Demo4("就很帅"); 79 } 80 81 @Override 82 public void run() { //线程运行内容 83 // TODO Auto-generated method stub 84 while (off_on) { //写一个while 循环修改按键颜色 85 h = (int)(Math.random()*361); 86 s = (int)(Math.random()*101); 87 b = (int)(Math.random()*101); 88 int i = (int)(Math.random()*2); 89 int j = (int)(Math.random()*2); 90 jButton.setBackground(colors_data[i][(int)(Math.random()*(colors_data[i].length))]); //设置按键背景颜色 91 jButton.setForeground(colors_data[j][(int)(Math.random()*(colors_data[j].length))]); 92 try { 93 thread.sleep(1000); 94 } catch (InterruptedException e) { 95 // TODO Auto-generated catch block 96 e.printStackTrace(); 97 } 98 validate(); 99 } 100 101 } 102 103 104 105}

运行结果:

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前

Java Swing类 颜色、按键状态判断例子代码 - HelloWorld