AWTExceptionをスローせずにグローバルロボット変数を作成するにはどうすればよいですか?
-
08-07-2019 - |
質問
AWTException
をスローせずに、Javaクラスでグローバルな Robot
変数を作成しようとしています。私がそれを思いつくことができる唯一の方法は、例外を投げることです。グローバルにする必要があるのは、クラスの他のメソッドで同じ 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){}
}
}
誰か助けてくれますか?
解決
AWTExceptionをスローバージョンを使用するだけです= "nofollow noreferrer"> java.awt.Robot
は、 GraphicsEnvironment.isHeadless()
はtrueです。
これは、とにかく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クラスが初期化されます
所属していません StackOverflow