屏幕取坐标程序-用于使用Robot类函数时的坐标确定

来源:互联网 发布:高并发解决方案java 编辑:程序博客网 时间:2024/04/30 21:56

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()); 
*/

原创粉丝点击