Pregunta

Estoy tratando de crear una variable global Robot en una clase Java sin lanzar una AWTException . La única forma en que se me ocurre es lanzando la excepción. La razón por la que necesito que sea global es porque necesito usar la misma variable Robot en otros métodos de la clase.

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

Si no lanzo la excepción, necesito declarar un nuevo Robot en cada método.

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

¿Alguien puede ayudarme?

¿Fue útil?

Solución

Simplemente use la versión throws AWTException , como java.awt.Robot solo lanza esta excepción cuando GraphicsEnvironment.isHeadless () es verdadero.

Lo que significa que no puedes ejecutar tu aplicación con Robot de todos modos.

Otros consejos

¿Hay alguna razón por la que no pueda atrapar la AWTException en el constructor y arrojarla dentro de una RuntimeException?

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

use un bloque inicializador estático en su clase Robo así:

public static Robot r;

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

Esto asegura que la clase Robot se inicialice tan pronto como la JVM cargue el archivo de clase Robo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top