java - JFrame في ملء الشاشة جافا




fullscreen (7)

سوف أقوم بمشروع قريبا وسأضطر إلى استخدام وضع ملء الشاشة فيه.

سوف يرسم بعض الرسومات في النافذة. سيكون من convinient إذا كنت تستخدم JFrame أو شيء مماثل.

لا أعرف ما سيكون القرار النهائي للشاشة. من فضلك أخبرني ما إذا كان سيتم تلقائيًا إعادة ترتيب الرسومات؟

JFrame jf = new JFrame();
jf.setSize(1650,1080);
//make it fullscreen;
//now is everything is going to be rescaled so it looks like the original?

أسهل حل على الإطلاق:

                for (Window w : Window.getWindows()) {
                    GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(w);
                }

أولاً وقبل كل شيء ، هذا هو القرار الذي تريد استخدامه ، 1650,1080 .

أضف الآن:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

إذا كنت تواجه مشكلات في مكونات JFrame ، فبعد إضافة جميع المكونات باستخدام طريقة frame.add(component) ، أضف العبارة التالية.

frame.pack();

إضافة:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
frame.setUndecorated(true);
frame.setVisible(true);


تعيين 2 خصائص أدناه:

  1. extendedState = 6
  2. resizeable = صحيح

وهو يعمل بالنسبة لي.


طريقة واحدة هي استخدام الدولة الموسعة. هذا يسأل نظام التشغيل الأساسي لتعظيم JFrame.

setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);

نهج آخر سيكون لتعظيم الشاشة يدويا لمتطلباتك.

    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(100, 100, (int) dim.getWidth(), (int) dim.getHeight());
    setLocationRelativeTo(null);

ولكن هذا لديه مزالق في نظام التشغيل أوبونتو. كان العمل حول وجدت هذا.

    if (SystemHelper.isUnix()) {
        getContentPane().setPreferredSize(
                Toolkit.getDefaultToolkit().getScreenSize());
        pack();
        setResizable(false);
        show();

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Point p = new Point(0, 0);
                SwingUtilities.convertPointToScreen(p, getContentPane());
                Point l = getLocation();
                l.x -= p.x;
                l.y -= p.y;
                setLocation(p);
            }
        });

    }
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(100, 100, (int) dim.getWidth(), (int) dim.getHeight());
    setLocationRelativeTo(null);

في فيدورا المشكلة المذكورة أعلاه ليست موجودة. ولكن هناك تعقيدات تشارك مع Gnome أو KDE . لذا كن حذرا. أتمنى أن يساعدك هذا.


وسوف يساعدك على استخدام الكائن الخاص بك لحظة من الإطار

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);





fullscreen