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. 导入导出Excel文件

    搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包  :  http:// ...

  2. Java通过webservice接口获取天气信息

    通过SOAP请求的方式获取天气信息并解析返回的XML文件. 参考: http://www.webxml.com.cn/WebServices/WeatherWS.asmx import java.io ...

  3. js跨域调用mvc ActionResult扩展

    背景 最近2个项目中都用到了js跨域访问的知识,2个项目都需要主站与各个分站之间进行数据交互.状态同步等相关操作.浏览器本身是不允许进行跨域访问,在MVC中我们可以扩展一个方法来实现这个功能.在此大家 ...

  4. S域传递函数的零点和极点

    传递函数的极点就是对应微分方程的特征根(回忆一下,$\frac{1}{s+a}$是$e^{-a t}$的Laplace变换),因此它们决定了系统自由运动的模态. 传递函数的零点不直接形成自由运动的模态 ...

  5. PAT 乙级 1019 数字黑洞 (20) C++版

    1019. 数字黑洞 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定任一个各位数字不完全相同的4位 ...

  6. ES6基础三(对象)

    对象赋值 在es6中,可以直接将声明的变量赋值给对象:     Object.keys().Object.values()和Object.entries() 在ES6中,允许我们使用变量作为对象的ke ...

  7. 廖雪峰Java2面向对象编程-6Java核心类-2StringBuilder

    字符串操作过程中,每次用 + 拼接字符串,有以下问题: 每次循环都会创建新的对象 绝大部分都是临时对象.浪费内存 影响GC效率 String s = ""; for(int i=0 ...

  8. jQuery的html和css

    jQuery每次返回的都是当前的集合对象: 每个方法用的时候都会把他的元素对象返回,他每次返回的都是最近的那个元素: 1.addclass() 备选元素添加一个类名 2.removeclass() 移 ...

  9. Oracle 故障整理

    #created at 18-10-28 by nod #提示磁盘空间已满 不能登录数据库 18-10-28 [oracle@oracle ~]$ sqlplus / as sysdba SQL*Pl ...

  10. centos 7安装搜狗输入法

    1.安装alien依赖软件 sudo yum install alien -y 2.安装依赖软件 sudo yum install qtwebkit -y 3.转换rpm包 sudo alien -r ...