我正在尝试在Java类中创建一个全局 Robot 变量,而不会抛出 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){}
    }
}

有人能帮助我吗?

有帮助吗?

解决方案

只需使用抛出AWTException 版本,就像 java.awt.Robot 仅在 GraphicsEnvironment.isHeadless() 为真。

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

其他提示

是否有理由不能在构造函数中捕获AWTException并将其包装在RuntimeException中?

public Robo() {
    try {
        r = new Robot();
    } catch(AWTException e) {
        throw new RuntimeException("Failed to create java.awt.Robot for Robo instance", e);
    }
}

在Robo类中使用静态初始化程序块 像这样:

public static Robot r;

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

这确保一旦JVM加载Robo类文件

,就会初始化Robot类
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top