首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >robot类mouseWheel不工作

robot类mouseWheel不工作
EN

Stack Overflow用户
提问于 2013-03-30 11:23:01
回答 2查看 6.5K关注 0票数 1

我使用Robot类模拟鼠标事件已经有一段时间了,一切都很好,直到我尝试使用mouseWheel函数进行滚动。我只有一句简单的话:

代码语言:javascript
运行
复制
  Robot robot = new Robot();
  robot.mouseWheel(-100);

我已经尝试了很长一段时间,程序运行,什么也不做,然后正常终止。有人能解释一下为什么会这样吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-30 19:05:35

您的程序可能无法正常工作,因为在鼠标指针所指向的图形用户界面上没有任何东西可供scroll up。或者,您没有将鼠标指针停留在可以看到滚动效果的适当GUI上。下面是实现这一点的简单程序。我希望这能对你有所帮助:

代码语言:javascript
运行
复制
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.awt.*;

public class MouseScrollRobot extends JFrame
{

    JTextArea ta;
    boolean scrolledAway = false;
    Robot robot;
    boolean started = false;
    public void createAndShowGUI() 
    {
        setTitle("Robot Demonstration");
        JPanel panel = new JPanel();
        ta = new JTextArea();   
        StringBuilder sBuilder = new StringBuilder();
        try
        {
            robot = new Robot();
            BufferedReader bfr = new BufferedReader(new FileReader("MouseScrollRobot.java"));
            String line = null ;
            while ((line = bfr.readLine()) !=null)
            {
                sBuilder.append(line+"\n");
            }
        }
        catch (Exception ex){ex.printStackTrace();}
        ta.setText(sBuilder.toString());
        JScrollPane jsp = new JScrollPane(ta);
        final Timer timer = new Timer(100, new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent evt)
            {
                try
                {
                    robot.mouseMove((getLocationOnScreen().x + getWidth()) / 2 , (getLocationOnScreen().y + getHeight()) / 2);//Move mouse pointer to the Component which you want to scroll
                    ta.requestFocus();
                    robot.setAutoDelay(100);
                    if (!scrolledAway)
                    {
                        setTitle("Scrolling up");
                        robot.mouseWheel(-40);
                    }
                    else
                    {
                        setTitle("Scrolling Down");
                        robot.mouseWheel(40);
                    }
                    scrolledAway = !scrolledAway;
                    setTitle("Scrolled");
                }catch (Exception ex){ex.printStackTrace();}
            }
        });
        timer.setRepeats(true);
        timer.start();
        getContentPane().add(jsp);
        setSize(500,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
  }

  public static void main(String args[]) 
  {
    SwingUtilities.invokeLater( new Runnable()
    {
        @Override
        public void run()
        {
            MouseScrollRobot msr = new MouseScrollRobot();
            msr.createAndShowGUI();
        }
    });
  }
}
票数 2
EN

Stack Overflow用户

发布于 2013-03-30 12:53:25

这对我来说很好。

代码语言:javascript
运行
复制
import java.awt.AWTException;
import java.awt.Robot;

public class TestRobotScroll {

    public static void main(String[] args) {
        try {
            Robot bot = new Robot();
            bot.setAutoDelay(100);
            Thread.sleep(2000);
            System.out.println("++");
            bot.mouseWheel(25);
            Thread.sleep(2000);
            System.out.println("--");
            bot.mouseWheel(-25);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

我让它在编辑器中滚动,在浏览器中滚动...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15714609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档