package rom;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.plaf.SliderUI; /*
* 写一个会自动变色的按键
*/
public class Demo4 extends JFrame implements ActionListener,Runnable{
JPanel jPanel;
JButton jButton;
Thread thread;
static boolean off_on;
int h;
int s;
int b;
Color color1 = Color.YELLOW; //黄色
// 黑色 灰色 灰色 蓝色 青色
Color colors_data [][] = {{color1,Color.BLACK,Color.GRAY,Color.gray,Color.BLUE,Color.CYAN
,Color.DARK_GRAY//深灰色
,Color.GREEN //绿色
,Color.LIGHT_GRAY //浅灰
,Color.MAGENTA //品红
,Color.ORANGE //橙色
,Color.PINK //粉色
,Color.RED //红色
,Color.WHITE} //白色
,{Color.getHSBColor(h,s,b)}}; //使用HSB拾色器模式拾取色彩,可以直接百度HSB了解 public Demo4(String name) {
// TODO Auto-generated constructor stub
super(name);
thread = new Thread(this); //创建一个线程
jPanel = new JPanel(); //添加区域面板
jButton = new JButton("手动换颜色"); //添加按键
jPanel.setSize(180, 180); //设置区域面板快大小
jPanel.add(jButton,BorderLayout.CENTER); //添加按键并且设置按键位置在中央显示
add(jPanel,BorderLayout.CENTER); //添加Jpanel布局到jframe中,并且将位置设置在中央
jButton.addActionListener(this); //按键监听
setSize(200, 200); // 设置大小
setVisible(true); //显示框体
validate(); //刷新验证
} @Override
public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub
if (e.getActionCommand() == "手动换颜色") { //判断按键是否按下手动换颜色
off_on = false; //修改布尔值
h = (int)(Math.random()*361);
s = (int)(Math.random()*101);
b = (int)(Math.random()*101);
int i = (int)(Math.random()*2);
int j = (int)(Math.random()*2);
jButton.setBackground(colors_data[i][(int)(Math.random()*(colors_data[i].length))]); //设置按键背景颜色
jButton.setForeground(colors_data[j][(int)(Math.random()*(colors_data[j].length))]); //设置按键文本颜色
jButton.setText("自动换颜色"); //修改文本内容
}
else if (e.getActionCommand() == "自动换颜色") { //判断按键文本内容
off_on = true;
jButton.setText("手动换颜色"); //修改按键文本
if(!(thread.isAlive())) { //判断线程是否关闭了,如果没有线程就创建一个新线程
thread = new Thread(this); //创建新线程
}
thread.start(); //启动线程
}
}
public static void main(String[] args) {
new Demo4("就很帅");
} @Override
public void run() { //线程运行内容
// TODO Auto-generated method stub
while (off_on) { //写一个while 循环修改按键颜色
h = (int)(Math.random()*361);
s = (int)(Math.random()*101);
b = (int)(Math.random()*101);
int i = (int)(Math.random()*2);
int j = (int)(Math.random()*2);
jButton.setBackground(colors_data[i][(int)(Math.random()*(colors_data[i].length))]); //设置按键背景颜色
jButton.setForeground(colors_data[j][(int)(Math.random()*(colors_data[j].length))]);
try {
thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
validate();
} } }

运行结果:

Java Swing类 颜色、按键状态判断例子代码的更多相关文章

  1. Java Swing类 例子代码:将子类继承JFrame 并且接口按键监听ActionLisetener (将内容直接添加到JFrame不创建Contaniner)

    package rom; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import ...

  2. Delphi 判断按键状态

    Delphi 判断按键状态 http://blog.sina.com.cn/s/blog_54da9cc001015di1.html (2012-04-05 14:22:50) 标签: 杂谈 分类:  ...

  3. Java Swing 使用总结(转载)

    随笔转载自:此去经年ぢ 地址:http://www.cnblogs.com/FLFL/p/5369756.html 1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在 ...

  4. java swing 添加 jcheckbox复选框

    总体上而言,Java Swing编程有两大特点:麻烦.效果差. 麻烦是说由于设计器的使用不方便(如果您希望使用窗体设计器通过快速拖拽控件建立您的Java Swing GUI程序,请您使用MyEclip ...

  5. Java swing实现酒店管理系统

    今天给大家提供一个由今天给大家提供一个由Java swing实现的酒店管理系统,数据库采用sqlserver,我会贴上部分代码,完整的代码请看文章最下方下载,下面看代码: 1.主框架代码: packa ...

  6. 恶补Java Swing线程刷新UI机制(由浅到深的参考大佬博文)

    1. java中进度条不能更新问题的研究 感谢大佬:https://blog.csdn.net/smartcat86/article/details/2226681 为什么进度条在事件处理过程中不更新 ...

  7. Java根类Object的方法说明

    Java中的Object类是所有类的父类,它提供了以下11个方法: public final native Class<?> getClass() public native int ha ...

  8. Java设计模式(19)状态模式(State模式)

    State的定义:不同的状态,不同的行为:或者说,每个状态有着相应的行为. 何时使用状态模式 State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If else ...

  9. atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结

    atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结 1. DND的操作流程 1 2. Html5 注 ...

随机推荐

  1. Eclipse提交代码到Spark集群上运行

    Spark集群master节点:      192.168.168.200 Eclipse运行windows主机: 192.168.168.100 场景: 为了测试在Eclipse上开发的代码在Spa ...

  2. RedHat无法ping通Win10的解决办法

    1.环境 主机: win10 企业版 64位 ip地址: 192.168.168.100 虚拟机:Red Hat ip地址: 192.168.168.200 2.现象: win10系统可以ping通R ...

  3. 电信版华为MATE7 EMUI4.0回退3.1和3.0教程与中转包

    mate7升级6.0后遇到很多问题,想回退版本,找了很多教程,现在总结一下用中转包回退.EMUI4.0回退3.1,先下载B500中转包,将dload复制到2G以上内存卡根目录,不要三键强刷,会卡在开机 ...

  4. Opencv 视频保存为图像

    // 视频存为图片.cpp : 定义控制台应用程序的入口点. // /*================================================================ ...

  5. [InfluxDB] 安装与配置

    [InfluxDB] 安装与配置 1- 下载 ubtuntu: wget https://dl.influxdata.com/influxdb/releases/influxdb_1.5.2_amd6 ...

  6. Delegate event 委托事件---两个From窗体使用委托事件

    窗体如下:   public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void b ...

  7. Feb 5 13:07:52 plugh rsyslogd-2177: imuxsock begins to drop messages from pid 12105 due to rate-limiting

    FROM:https://www.nri-secure.co.jp/ncsirt/2013/0218.html SANSインターネットストームセンターのハンドラであるJohannes Ullrichが ...

  8. git撤销本地所有未提交的更改

    1. git clean -df2. git reset --hard第一个命令只删除所有untracked的文件,如果文件已经被tracked, 修改过的文件不会被回退.而第二个命令把tracked ...

  9. 开启和关闭HBase的thrift进程

    开启 $HBASE_HOME/bin/hbase-daemon.sh start thrift [hadoop@bigdatamaster hbase]$ jps 3543 ThriftServer ...

  10. Oracle事务隔离级别处理差异

    Oracle事务隔离是事务读操作不同程度的数据隔离,分为READ_UNCOMMITTED.READ_COMMITTED(默认).SERIALIZABLE. Oracle事务隔离级别SERIALIZAB ...