import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
/**
*BY 黄金 ry0821119@buaa
*2009/06/10
*转载请注明作者,谢谢!
*/
public class MouseHelp extends JFrame implements ActionListener {
public static void main(String[] args) {
new MouseHelp();
}
private JButton start;
public MouseHelp() {
super("屏幕坐标确定");
try{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}catch(Exception exe){
exe.printStackTrace();
}
start = new JButton("开始");
start.addActionListener(this);
this.getContentPane().add(start);
this.setSize(200,80);
this.setVisible(true);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void initGUI() {
JFrame frame = new JFrame();
frame.getContentPane().add(new Temp());
frame.setUndecorated(true);
frame.pack();
frame.setVisible(true);
frame.setSize(Toolkit.getDefaultToolkit().getScreenSize().width,Toolkit.getDefaultToolkit().getScreenSize().height);
frame.setAlwaysOnTop(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// com.sun.awt.AWTUtilities.setWindowOpacity(frame, 0.01f);
}
private class Temp extends JPanel implements MouseMotionListener{
private BufferedImage bi;
private int width,height;
private Point p=new Point();//当前鼠标移的地点
private Robot robot;
private Color color;
public Temp(){
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screenSize = toolkit.getScreenSize();
Rectangle screenRect = new Rectangle(screenSize);
try{
robot = new Robot();
bi=robot.createScreenCapture(screenRect);
}catch(Exception e){
}
width=screenRect.width;
height=screenRect.height;
this.addMouseMotionListener(this);
}
public void paintComponent(Graphics g){
g.drawImage(bi,0,0,width,height,this);
g.setColor(Color.RED);
g.setFont(new Font("大号",Font.PLAIN,40));
int showX,showY;
if(p.x>width-500)
showX=p.x-515;
else
showX=p.x+15;
if(p.y<55)
showY=p.y+55;
else
showY=p.y-15;
String str = "("+p.x+","+p.y+") R:"+color.getRed()+",G:"+color.getGreen()+",B:"+color.getBlue();
g.drawString(str,showX,showY);
}
public void mouseMoved(MouseEvent e){
p=e.getPoint();
color=robot.getPixelColor(p.x, p.y);
repaint();
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource() == start){
this.setExtendedState(JFrame.HIDE_ON_CLOSE);
initGUI();
}
}
}
/*
ps:
drawString 用法tip
graphics.setFont(font);
FontMetrics fm = graphics.getFontMetrics();
graphics.drawString("Hello!", 0, fm.getMaxAscent());
*/