0

我正在尝试Robot在 Java 类中创建一个全局变量而不抛出AWTException. 我能想出的唯一方法是抛出异常。我需要它是全局的原因是因为我需要Robot在类的其他方法中使用相同的变量。

public class Robo{
    Robot r;

    public Robo() throws AWTException{
        r = new Robot();
    }

    public void useRobot(){       
        r.mouseMove(5, 5);
        r.toString();
    }

    public void useRobot2(){
        //r....some other things
    }
}

如果我不抛出异常,我需要在每个方法中声明一个新的 Robot。

public class Robo{

    public Robo() {

    }

    public void useRobot(){
        try{
            Robot r = new Robot();
            r.mouseMove(5, 5);
            r.toString();
        }
        catch (AWTException e){}
    }

    public void useRobot2(){
        try{
            Robot r = new Robot();
            r...... //some other things
        }
        catch (AWTException e){}
    }
}

有人可以帮助我吗?

4

3 回答 3

1

您是否有理由无法在构造函数中捕获 AWTException 并将其包裹在 RuntimeException 中?

public Robo() {
    try {
        r = new Robot();
    } catch(AWTException e) {
        throw new RuntimeException("Failed to create java.awt.Robot for Robo instance", e);
    }
}
于 2009-10-29T02:05:54.033 回答
1

只需使用throws AWTException版本,因为只有在为 truejava.awt.Robot时才会抛出此异常。GraphicsEnvironment.isHeadless()

这意味着无论如何您都无法使用 Robot 运行您的应用程序。

于 2009-10-29T02:06:39.927 回答
0

在 Robo 类中使用静态初始化块,如下所示:

public static Robot r;

static
{
    try {
        r = new Robot();
    } catch(AWTException e){e.printStrackTrace();}
}

这可确保在 JVM 加载 Robo 类文件后立即初始化 Robot 类

于 2011-11-27T00:19:04.600 回答