观心静

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
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();
		}
		
	}

	

}

运行结果:

posted on 2018-03-12 15:19  观心静  阅读(480)  评论(0编辑  收藏  举报