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
    }
}

例外をスローしない場合は、すべてのメソッドで新しいロボットを宣言する必要があります。

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

が true の場合にのみこの例外をスローするため、throws AWTExceptionバージョンを使用してください。java.awt.RobotGraphicsEnvironment.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 に答える