awtexception을 던지지 않고 글로벌 로봇 변수를 어떻게 만들 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1641233

  •  08-07-2019
  •  | 
  •  

문제

나는 글로벌을 만들려고 노력하고 있습니다 Robot an을 던지지 않고 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){}
    }
}

누군가 나를 도울 수 있습니까?

도움이 되었습니까?

해결책

그냥 사용하십시오 throws AWTException 버전 java.awt.Robot 이 예외 만 던지면됩니다 GraphicsEnvironment.isHeadless() 사실이다.

어쨌든 로봇으로 앱을 실행할 수 없습니다.

다른 팁

생성자에서 awtexception을 잡을 수없는 이유가 있습니까?

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 클래스 파일을로드하자마자 로봇 클래스가 초기화되도록합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top