import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestFrame extends JFrame 
{
private JButton btn1 = new JButton("Button 1");
private JButton btn2 = new JButton("Button 2");

public TestFrame()
{
setLayout(new GridLayout(0, 1));
add(btn1);
add(btn2);

btn1.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent event)
{
if (event.getButton() == MouseEvent.BUTTON1)
System.out.println(btn1.getText() + "鼠标左键点击");
if (event.getButton() == MouseEvent.BUTTON3)
System.out.println(btn1.getText() + "鼠标右键点击");
}
});
btn2.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent event)
{
if (event.getButton() == MouseEvent.BUTTON1)
System.out.println(btn2.getText() + "鼠标左键点击");
if (event.getButton() == MouseEvent.BUTTON3)
System.out.println(btn2.getText() + "鼠标右键点击");
}
});
}

public void simulationClick()
{
//模拟鼠标点击代码
}

public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
TestFrame frame = new TestFrame();
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.simulationClick();
}
});
}
}请高手帮忙补一下其中的模拟鼠标点击代码

解决方案 »

  1.   

    用 java.awt.RobotmouseMove()
    mousePress()
      

  2.   

    最好只是模拟鼠标点击,但实际鼠标不动,用Robot类的话,实际鼠标必须先模拟移动才能模拟点击
      

  3.   

    如果你只是想调用方法,那直接调用好啦
    也可以不move只click嘛
      

  4.   

    不懂,Robot类中关于鼠标的函数不是只有这么三个吗
     void mouseMove(int x, int y) 
              将鼠标指针移动到给定屏幕坐标。 
     void mousePress(int buttons) 
              按下一个或多个鼠标按钮。 
     void mouseRelease(int buttons) 
              释放一个或多个鼠标按钮。 
    不先mouseMove,如何使用mousePress和mouseRelease?
      

  5.   

    算了,我已经想到了,先保存当前鼠标的位置,模拟完后再还原回去就行了import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class TestFrame extends JFrame 
    {
    private JButton btn1 = new JButton("Button 1");
    private JButton btn2 = new JButton("Button 2");
    private Robot robot;

    public TestFrame()
    {
    setLayout(new GridLayout(0, 1));
    add(btn1);
    add(btn2);

    btn1.addMouseListener(new MouseAdapter()
    {
    public void mouseClicked(MouseEvent event)
    {
    if (event.getButton() == MouseEvent.BUTTON1)
    System.out.println(btn1.getText() + "鼠标左键点击");
    if (event.getButton() == MouseEvent.BUTTON3)
    System.out.println(btn1.getText() + "鼠标右键点击");
    }
    });
    btn2.addMouseListener(new MouseAdapter()
    {
    public void mouseClicked(MouseEvent event)
    {
    if (event.getButton() == MouseEvent.BUTTON1)
    System.out.println(btn2.getText() + "鼠标左键点击");
    if (event.getButton() == MouseEvent.BUTTON3)
    System.out.println(btn2.getText() + "鼠标右键点击");
    }
    });
    addMouseMotionListener(new MouseMotionAdapter()
    {
    public void mouseMoved(MouseEvent event)
    {
    }
    });
    }

    public void simulationClick() throws AWTException
    {
    //模拟鼠标点击代码
    Point p1 = btn1.getLocation();
    Point p2 = btn2.getLocation();
    System.out.println(p1.x + "," + p1.y);
    System.out.println(p2.x + "," + p2.y);
    Point p = MouseInfo.getPointerInfo().getLocation();
    int x = p.x;
    int y = p.y;
    robot = new Robot();
    System.out.println(x + "," + y);
    robot.mouseMove(p1.x + 10, p2.y + 10);
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    robot.mouseMove(x, y);
    }

    public static void main(String[] args)
    {
    EventQueue.invokeLater(new Runnable()
    {
    public void run()
    {
    TestFrame frame = new TestFrame();
    frame.pack();
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    try 
    {
    frame.simulationClick();
    }
    catch (AWTException e) 
    {
    e.printStackTrace();
    }
    }
    });
    }
    }