首页>代码>java swing版本取色器>/1134413034406912.java
package com.image;

/**Java取色器 v1.1
 终于回到家了,对前几天做的取色器进行了修改,去掉了一大堆重复的代码,
 添加了一个JLabel,可以对选中的颜色进行即时显示,防止点错,欢迎大家的使用。
 **/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.MouseInfo.*;
import java.awt.datatransfer.*;

public class ColorTest extends JFrame implements ActionListener, KeyListener {
	Robot robot;
	Point mousepoint;
	Integer R = 0, G = 0, B = 0;
	Integer X = 0, Y = 0;
	Color pixel = new Color(0, 0, 0);
	String s16 = "";
	MouseInfo mouseinfo = null;
	JLabel JR, JG, JB, JX, JY, J16, JCol;
	JTextField JTFR, JTFG, JTFB, JTFX, JTFY, JTF16;
	JButton JCopy, JExit;
	JPanel pix = new JPanel(), zb = new JPanel(), pb = new JPanel();

	// 主窗口上菜单的建造。
	public void setMenuBar() {
		JMenuBar myBar = new JMenuBar();
		JMenu helpMenu = new JMenu("帮助");
		JMenuItem help_About = new JMenuItem("关于");

		this.setJMenuBar(myBar);
		myBar.add(helpMenu);
		helpMenu.add(help_About);
		help_About.addActionListener(this);
	}

	// 界面各种组件的初始化以及布局。
	public void ColorTest() {
		setTitle("DarkMao");
		JR = new JLabel("R: ");
		JG = new JLabel("G: ");
		JB = new JLabel("B: ");
		JX = new JLabel("X: ");
		JY = new JLabel("Y: ");
		J16 = new JLabel("十六进制表示:");
		JCol = new JLabel("■■■■■");
		JTFR = new JTextField(5);
		JTFG = new JTextField(5);
		JTFB = new JTextField(5);
		JTF16 = new JTextField(6);
		JTFX = new JTextField(5);
		JTFY = new JTextField(5);
		JCopy = new JButton("复制");
		JExit = new JButton("退出");
		setFocusable(true);
		addKeyListener(this);
		JCopy.addActionListener(this);
		JExit.addActionListener(this);
		JCopy.addKeyListener(this);
		JExit.addKeyListener(this);
		JTFR.addKeyListener(this);
		JTFG.addKeyListener(this);
		JTFB.addKeyListener(this);
		JTF16.addKeyListener(this);
		JTFX.addKeyListener(this);
		JTFY.addKeyListener(this);
		pix.setLayout(new FlowLayout());
		zb.setLayout(new FlowLayout());
		pb.setLayout(new FlowLayout());
		pix.add(JR);
		pix.add(JTFR);
		pix.add(JG);
		pix.add(JTFG);
		pix.add(JB);
		pix.add(JTFB);
		zb.add(JX);
		zb.add(JTFX);
		zb.add(JY);
		zb.add(JTFY);
		pix.add(JCol);
		pix.add(J16);
		pix.add(JTF16);
		pb.add(JCopy);
		pb.add(JExit);
		setLayout(new BorderLayout());
		add(pix, BorderLayout.CENTER);
		add(zb, BorderLayout.NORTH);
		add(pb, BorderLayout.SOUTH);
	}

	// 把当前选中的颜色的十六进制表示复制到系统的剪贴板中,方便使用。
	// 输入的参数就是待放入剪贴板的数据。
	public static void setClipboard(String str) {
		StringSelection ss = new StringSelection(str);
		Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
	}

	// 对按钮和菜单进行响应。
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == JCopy) {
			if (s16 == "") {
				JOptionPane.showMessageDialog(null, "请在你想要的颜色上面按Alt键进行选取。",
						"提示", JOptionPane.INFORMATION_MESSAGE);
			} else {
				setClipboard(s16);
				JOptionPane.showMessageDialog(null, "你所选取的16进制颜色代码 " + s16
						+ " 已经复制到剪贴板中,请在你想用的地方按Ctrl+V粘贴。", "提示",
						JOptionPane.INFORMATION_MESSAGE);
			}
		} else if (e.getSource() == JExit) {
			JOptionPane.showMessageDialog(null,
					"谢谢您的使用,这是我用java做的第一个小程序,如果你在使用过程用有了什么好玩的想法,一定要告诉我啊!",
					"谢谢使用", JOptionPane.INFORMATION_MESSAGE);
			System.exit(0);
		}
		if (e.getActionCommand() == "关于")
			JOptionPane
					.showMessageDialog(
							this,
							"DarkMao 取色器 1.0\n和PS里的拾色器功能类似,但是使用方便,不用先截图再打开PS了,希望你能喜欢。\n想知道鼠标在的这一点的颜色吗?点下ALT键看看吧。\n如果你在使用过程中有了什么主意的话,请告诉我一下,谢谢。\nE-mail: 2whol@163.com",
							"关于我", JOptionPane.INFORMATION_MESSAGE);
	}

	// 当按键放开的时候才对案件进行响应,如果不想一下一下的点,
	// 可以把里边的代码剪切到keyPressed()中,这样只要按下alt键同时移动鼠标就可以了。
	public void keyReleased(KeyEvent e) {
		// int code=e.getKeyCode();
		// System.out.println(code);
		if (e.getKeyCode() == 18) {
			try {
				Robot robot = new Robot();
				mousepoint = mouseinfo.getPointerInfo().getLocation();
				// System.out.println(mousepoint);
				pixel = robot.getPixelColor(mousepoint.x, mousepoint.y);
				X = mousepoint.x;
				Y = mousepoint.y;
				R = pixel.getRed();
				G = pixel.getGreen();
				B = pixel.getBlue();
				JTFR.setText(R.toString());
				JTFG.setText(G.toString());
				JTFB.setText(B.toString());
				JTFX.setText(X.toString());
				JTFY.setText(Y.toString());
				// System.out.println(pixel);
				s16 = "#" + Integer.toHexString(R) + Integer.toHexString(G)
						+ Integer.toHexString(B);// 得到颜色的十六进制表示。
				JTF16.setText(s16);
				Color col = new Color(R, G, B);
				JCol.setForeground(col);// 对当前选中的颜色进行显示。
			} catch (AWTException ex) {
				ex.printStackTrace();
			}
		}
	}

	public void keyTyped(KeyEvent e) {

	}

	public void keyPressed(KeyEvent e) {
	}

	public static void main(String[] args) {
		ColorTest ct = new ColorTest();
		ct.setMenuBar();
		ct.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ct.setSize(300, 200);
		ct.setLocation(200, 200);
		ct.ColorTest();
		ct.setVisible(true);
	}
}
最近下载更多
wubinbin  LV11 2022年2月13日
韦向勇  LV5 2018年4月19日
musicfyy  LV1 2016年12月4日
bubug123  LV1 2016年10月25日
璐璐不卖萌  LV1 2016年10月12日
云中燕  LV1 2016年7月18日
kong.yee  LV40 2015年8月4日
lovejenny  LV1 2015年8月4日
AXIN  LV36 2014年2月13日
Smail_  LV19 2013年1月15日
最近浏览更多
luo110012  LV9 2023年5月17日
猪皮怪 2022年6月12日
暂无贡献等级
wubinbin  LV11 2022年2月13日
13543528515  LV8 2021年12月10日
anAdmin  LV5 2021年11月24日
R_GYsafdsafafd  LV1 2021年7月21日
shiys7  LV1 2021年3月24日
xiongfan  LV6 2021年1月29日
gao123qq  LV21 2020年10月10日
xiaot99  LV7 2020年7月15日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友