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();
}
}
}
运行结果:
本文来自博客园,作者:观心静 ,转载请注明原文链接:https://www.cnblogs.com/guanxinjing/p/9708650.html
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
分类:
Java 学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具