كيف يمكنني إنشاء متغير Robot عالمي دون طرح AWTException؟

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

  •  08-07-2019
  •  | 
  •  

سؤال

أحاول إنشاء عالمي 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){}
    }
}

يمكن لأي شخص أن يساعدني؟

هل كانت مفيدة؟

المحلول

مجرد استخدام throws 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);
    }
}

واستخدام كتلة مهيئ ثابت في الصف روبو الخاص بك مثل هذا:

public static Robot r;

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

وهذا يجعل من تتم تهيئة الطبقة روبوت بمجرد تحميل JVM ملف فئة روبو

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top