如题,可以监听鼠标单击、双击、移动等,谢谢了。急。

解决方案 »

  1.   

    http://feeling.sourceforge.net/?language=zh-cn&http://feeling.sourceforge.net/?language=zh-cn&
      

  2.   

    啥叫监听鼠标 全屏事件???
    要用 jni 么?
    你运行下这个试一试
    package ui.frame;import java.awt.AWTException;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Dimension;
    import java.awt.DisplayMode;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.GraphicsDevice;
    import java.awt.GraphicsEnvironment;
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.UUID;import javax.imageio.ImageIO;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;import com.sun.awt.AWTUtilities;public class PrintScreen {

    private JFrame frame;
    private GraphicsEnvironment ge;
    private GraphicsDevice gd;
    private DisplayMode dm;

    private JFrame f;
    private Graphics g;

    private int x1,y1;
    private int x2,y2;

    private boolean b1 = true;


    public void createAndShowUI(){

    ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    gd = ge.getDefaultScreenDevice();
    dm = gd.getDisplayMode();

    int dim_w = 200;
    int dim_h = 200;
    frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    // frame.setUndecorated(false);

    frame.setPreferredSize(new Dimension(dim_w, dim_h));
    Container contentPane = frame.getContentPane();

    JButton b1 = new JButton("截图");

    b1.addMouseListener(new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
    printScreen();
    }
    }); contentPane.add(b1,BorderLayout.SOUTH);
    //
    int x = dm.getWidth();
    int y = dm.getHeight();
    frame.setLocation(x - dim_w, 0);
    frame.pack();
    frame.setVisible(true);

    }

    private void printScreen(){
    createFrame();
    }

    private void createFrame(){

    f = new JFrame("选择区域");
    f.setPreferredSize(new Dimension(dm.getWidth(),dm.getHeight()));
    f.setUndecorated(true);
    // gd.setFullScreenWindow(f); f.addMouseListener(new MouseListener() {

    public void mouseReleased(MouseEvent e) {
    if(b1==true){
    x2 = e.getXOnScreen();
    y2 = e.getYOnScreen();
    b1 = false;

    g.setColor(Color.BLACK);
    g.drawRect(x1, y1, (x2-x1), (y2-y1));
    // System.out.println("released " + x2 + " : " + y2);
    }

    }

    public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub
    if(b1==true){
    x1 = e.getXOnScreen();
    y1 = e.getYOnScreen();
    // System.out.println("pressed " + x1 + " : " + y1);
    }
    }

    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub
    }

    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub
    }

    public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub
    if(e.getClickCount()==2){
    createImage();
    f.setVisible(false);
    f.dispose();
    }
    }
    });

    f.pack();
    f.setVisible(true);

    g = f.getGraphics();

    AWTUtilities.setWindowOpacity(f, 0.1f);
    // AWTUtilities.setWindowOpaque(f, false); //window does not support this effects

    }

    private void createImage(){

    System.out.println("双击截图");

    Robot robot = null;
    try {
    robot = new Robot();
    } catch (AWTException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    Rectangle screenRect = null;

    screenRect = new Rectangle(new Dimension((x2-x1),(y2-y1)));
    screenRect.setLocation(x1, y1);

    BufferedImage image = robot.createScreenCapture(screenRect);

    FileOutputStream fos = null;
    // 生成全球唯一id
    UUID uuid = UUID.randomUUID();
    String file = "F:\\screen" + uuid + ".jpg";

    try {
    fos = new FileOutputStream(new File(file));
    } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }

    try {
    ImageIO.write(image, "JPG", fos);
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    try {
    fos.flush();
    fos.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    public static void main(String[] args) {

    final PrintScreen ps = new PrintScreen();

    SwingUtilities.invokeLater(new Runnable(){
    public void run(){
    ps.createAndShowUI();
    }
    });

    }

    }
      

  3.   

    我的意思是鼠标点击屏幕的任意位置,程序都能监听得到。纯Java实现不了。
      

  4.   

    http://4develop.in/page/Java/20100505_19_2d94d910-176b-49a0-a8f2-5c573523643d/%E6%80%8E%E4%B9%88%E8%8E%B7%E5%BE%97%E5%85%A8%E5%B1%8F%E7%9A%84%E9%BC%A0%E6%A0%87%E4%BA%8B%E4%BB%B6.html参考吧。