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}
运行结果:
