很抱歉,如果这个问题没有意义。我有一种感觉,如果我能够更好地说出问题,我将能够自己找到答案。
以下是我的代码:(省略与问题无关的部分)
Robot robot = new Robot();// create robot
//---Perform Task ---//
//part 1
robot.keyPress(KeyEvent.VK_CONTROL);
robot.mouseMove(1300, var);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(stdDelay);
//part 2
robot.mouseMove(1300, var+20);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(stdDelay);
//part 3
robot.mouseMove(1300, var+40);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(stdDelay);
robot.keyRelease(KeyEvent.VK_CONTROL);
我想要做的是将所有部分放在// --- Perform Task --- //下面的方法中,以便我可以在我想要执行该任务时调用该方法,而不是每次我想执行该任务时复制粘贴所有代码。
帮助澄清:
如果我这样做:
public class task {
Robot robot = new Robot();
//---Begin task-----//
robot.mouseMove(16,853);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
//---Wait for task---//
robot.delay(35000);
}
我在机器人机器人行上得到错误:未报告的异常java.awt.AWTException;必须被抓住或宣布被抛出。然后导致所有其他线路出错,因为它们依赖于新机器人的构造。
非常感谢所有的建议。我会给那些人一个机会!
我最终做的是创建一个类:public class RobotStuff {},其方法如下所示:Public void doStuff()throws AWTException {} 然后我在每个方法中构造了一个新的Robot()。它到目前为止工作。感谢您的评论和解答!
答案 0 :(得分:2)
public static void doStuff(Robot robot){
// paste your stuff here
}
确保您已获得通过编译器所需的导入,这应该可以正常工作
答案 1 :(得分:2)
这是一个很好的问题。需要考虑两件事:
以下是我提出的建议:
import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
public class RobotWrapper {
private static final int STD_DELAY = 35000;
private final Robot robot;
public RobotWrapper() {
try {
robot = new Robot();
} catch (AWTException e) {
throw new RuntimeException(e);
}
}
public void doStuff(int x, int y) {
robot.keyPress(KeyEvent.VK_CONTROL);
robot.mouseMove(x, y);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(STD_DELAY);
}
public static void main(String[] args) {
RobotWrapper robotWrapper = new RobotWrapper();
robotWrapper.doStuff(16, 853);
robotWrapper.doStuff(100, 200);
}
}
答案 2 :(得分:-1)
注意,有些人认为单身人士是反模式 - 这在很大程度上取决于你想做什么,但会适用于你的简单案例。在你盲目使用之前,你应该多读一些。
您可以使用单例模式:
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
// Private constructor prevents instantiation from other classes
private Singleton() {
}
public static Singleton getInstance() {
return INSTANCE;
}
public void doSomeStuff() {
// Put your code here
}
}
然后你可以这样称呼它:
Singleton.getInstance().doSomeStuff()
将您的类重命名为具有一些有意义名称的其他内容。
看看这里的解释:
答案 3 :(得分:-1)
您可以考虑将子类化为机器人。
public class ExtendedRobot extends Robot{
public doStuff(){
// paste code here
}
}
为了让你的东西发生,你要做一个机器人
Robot robot = new Robot();
robot.doStuff();