موقع حفظ JFrame في بيئة العرض المتعدد
سؤال
وأريد أن تخزين 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
. أنا لا أعتقد أنك يمكن أن يحدد ذلك بعد البناء.
وبطبيعة الحال، يجب أن تكون حذرا لا، ويقول، فتح إطار قبالة الشاشة لأن القرار قد تغير.
لا تنتمي إلى StackOverflow