使用上稍微不太习惯,但总比到各个不靠谱的下载站下载个病毒的软件要好多了,鼠标点选要获取的地方,然后点击alt即可获取到颜色值
效果图如下:
自己的想法能用各种代码的组合实现出来,真的很有成就感啊,哈哈。
在你想要的颜色上面点下ALT键,就这么简单。
.exe文件使用exe4j做的,在我的机子上能用,没有别的机子进行测试,要是不能用,请通知我。
今天对前几天做的取色器进行了修改,去掉了一大堆重复的代码,添加了一个JLabel,可以对选中的颜色进行即时显示,防止点错,欢迎大家的使用。
经过了这么多天,我对面向对象还是不是很明白,写的代码的结构也不好,谁能帮我改一下啊,谢谢了。
v1.1
终于回到家了,对前几天做的取色器进行了修改,去掉了一大堆重复的代码,
添加了一个JLabel,可以对选中的颜色进行即时显示,防止点错,欢迎大家的使用。
经过了这么多天,对面向对象还是不是很明白,写的代码的结构也不好,谁能帮我改一下呢?
v1.0
经过这么多天的学习,这是我做出的第一个JAVA程序。自己的想法能用各种代码的组合实现出来,真的很有成就感啊,哈哈。
在你想要的颜色上面点下ALT键,就这么简单。
等有空了,我还想在这上面多加点功能,如果你有了好的想法,请告诉我一下。
谢谢。
Java code
/**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 和PS里的拾色器功能类似,但是使用方便,不用先截图再打开PS了,希望你能喜欢。 想知道鼠标在的这一点的颜色吗?点下ALT键看看吧。 如果你在使用过程中有了什么主意的话,请告诉我一下,谢谢。 E-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)
{
}
}
class CT
{
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);
}
}