سؤال

وأريد أن تخزين JFrame في موقع (الحدود، extendedState) عندما يغلق المستخدم ذلك. ومع ذلك، عندما يقوم المستخدم بتحريك إطار على الشاشة 2nd و يزيد عليه، كيف يمكنني تخزين هذه المعلومات؟ بلدي تنفيذ السذاجة (وعرض واحد) هو من هذا القبيل:


void saveFrame(JFrame frame) throws IOException {
    Properties props = new Properties();
    props.setProperty("State", String.valueOf(frame.getExtendedState()));
    props.setProperty("X", String.valueOf(frame.getX()));
    props.setProperty("Y", String.valueOf(frame.getY()));
    props.setProperty("W", String.valueOf(frame.getWidth()));
    props.setProperty("H", String.valueOf(frame.getHeight()));
    props.storeToXML(new FileOutputStream("config.xml"), null);
}
void loadFrame(JFrame frame) throws IOException {
    Properties props = new Properties();
    props.loadFromXML(new FileInputStream("config.xml"));
    int extendedState = Integer.parseInt(props.getProperty("State", String.valueOf(frame.getExtendedState())));
    if (extendedState != JFrame.MAXIMIZED_BOTH) {
        frame.setBounds(
            Integer.parseInt(props.getProperty("X", String.valueOf(frame.getX()))),
            Integer.parseInt(props.getProperty("Y", String.valueOf(frame.getY()))),
            Integer.parseInt(props.getProperty("W", String.valueOf(frame.getWidth()))),
            Integer.parseInt(props.getProperty("H", String.valueOf(frame.getHeight())))
        );
    } else {
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
}

وكيف يمكنني اكتشاف الذي الشاشة يقع الإطار؟ كيف يمكنني نقل الإطار إلى الشاشة الثانية وتكبيره هناك؟

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

المحلول

لتجد معرف الجهاز الرسومات المستخدمة:

frame.getGraphicsConfiguration().getDevice().getIDString()

والذهاب في الاتجاه الآخر، يمكنك العثور على أجهزة الرسومات مع:

 GraphicsEnvironment.getLocalGraphicsEnvironment().getDevices()

ويمكنك بعد ذلك استخدام تكوين من الجهاز في منشئ JFrame. أنا لا أعتقد أنك يمكن أن يحدد ذلك بعد البناء.

وبطبيعة الحال، يجب أن تكون حذرا لا، ويقول، فتح إطار قبالة الشاشة لأن القرار قد تغير.

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