JFrame अधिकतम विंडो


88

मैं झूले का उपयोग करके एक त्वरित और गंदे एनीमेशन डाल रहा हूं। मैं चाहूंगा कि खिड़की अधिकतम हो। मैं उसे कैसे कर सकता हूँ?

जवाबों:


133

बशर्ते कि आप JFrame का विस्तार कर रहे हैं:

public void run() {
    MyFrame myFrame = new MyFrame();
    myFrame.setVisible(true);
    myFrame.setExtendedState(myFrame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
}

13
एक उदाहरण के माध्यम से स्थैतिक क्षेत्र का उपयोग करना एक बुरा अभ्यास है। JFrame.MAXIMIZED_BOTHइसके बजाय उपयोग करें ।
nimcap

2
विशाल, बड़े पैमाने पर बग और उपरोक्त के साथ मुद्दे! (ठीक है, ठीक है, बिना किसी बड़े परिणाम के छोटी-मोटी चेतावनियाँ ...) फ्रेम होना चाहिए। MAXIMIZED_BOTH नहीं JFrame.MAXIMIZED_BOTH! :)
मैनियस

आप पहले सेटिविजुअल (ट्रू) को क्यों कहते हैं? क्या यह महत्वपूर्ण है? यह भी (ubuntu) के बिना ठीक काम करता है।
AvrDragon

1
setVisible(true)पहले के बिना , फ्रेम सही आकार नहीं है। मैंने पहले और बाद में दोनों की कोशिश की setExtendedState(), और setVisible()पहले होना चाहिए।
mjibson

2
@ क्रुसेडर वास्तव में यहाँ कोई समस्या नहीं है, क्योंकि दोनों एक ही स्थिर क्षेत्र (से JFrameविरासत में Frame) का उल्लेख करते हैं ।
गिलोय पूलेट

18

कुछ इस तरह this.setExtendedState(this.getExtendedState() | this.MAXIMIZED_BOTH);

import java.awt.*;
import javax.swing.*;

public class Test extends JFrame
{
    public Test()
    {
        GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
        this.setMaximizedBounds(env.getMaximumWindowBounds());
        this.setExtendedState(this.getExtendedState() | this.MAXIMIZED_BOTH);
    }

    public static void main(String[] args)
    {
        JFrame.setDefaultLookAndFeelDecorated(true);

        Test t = new Test();
        t.setVisible(true);
    }
}

किसलिए है |? क्या यह एक करता है, और अगर यह विफल हो जाता है तो यह दूसरा करता है? या आप प्रोग्रामर पसंद का संकेत दे रहे हैं (इस कॉल में जाने के लिए ए। बी। में से एक को चुनें?) मैंने इस वाक्यविन्यास को पहले नहीं देखा है।
प्यूरफेरेट

@Pureferret यह "बिटवाइज़ इनक्लूसिव ऑर" ऑपरेटर है, जो यदि किसी भी ऑपरेंड में मौजूद है, तो इसे थोड़ा कॉपी करता है। ( Docs.oracle.com/javase/tutorial/java/nutsandbolts/... या tutorialspoint.com/java/java_basic_operators.htm )
VonC

14

यदि आप JFrame का उपयोग कर रहे हैं, तो यह प्रयास करें

JFrame frame = new JFrame();
//...
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);


2

मुझे यह संस्करण पसंद है:

import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.Toolkit;
import javax.swing.JFrame;

public class Test
{
    public static void main(String [] args)
    {
        final JFrame frame = new JFrame();
        final GraphicsConfiguration config = frame.getGraphicsConfiguration();

        final int left = Toolkit.getDefaultToolkit().getScreenInsets(config).left;
        final int right = Toolkit.getDefaultToolkit().getScreenInsets(config).right;
        final int top = Toolkit.getDefaultToolkit().getScreenInsets(config).top;
        final int bottom = Toolkit.getDefaultToolkit().getScreenInsets(config).bottom;

        final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        final int width = screenSize.width - left - right;
        final int height = screenSize.height - top - bottom;

        frame.setResizable(false);
        frame.setSize(width,height);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
        frame.setVisible(true);
    }
}

मुझे यह संस्करण बहुत पसंद है। बहुत बहुत धन्यवाद।
SWIIWII

2

JFrame को पूर्ण-स्क्रीन पर सेट करने का तरीका, MAXIMIZED_BOTHविकल्प सेट करना है जो कि खड़ा है MAXIMIZED_VERT | MAXIMIZED_HORIZ, जो क्रमशः फ्रेम को लंबवत और क्षैतिज रूप से अधिकतम करने के लिए सेट करता है।

package Example;
import java.awt.GraphicsConfiguration;
import javax.swing.JFrame;
import javax.swing.JButton;

public class JFrameExample
{
    static JFrame frame;
    static GraphicsConfiguration gc;
    public static void main(String[] args)
    {
        frame = new JFrame(gc);
        frame.setTitle("Full Screen Example");
        frame.setExtendedState(MAXIMIZED_BOTH);

        JButton button = new JButton("exit");
        b.addActionListener(new ActionListener(){@Override
        public void actionPerformed(ActionEvent arg0){
            JFrameExample.frame.dispose();
            System.exit(0);
        }});

        frame.add(button);
        frame.setVisible(true);
    }
}

2

मैंने इस थ्रेड और यहाँ के लोगों में समाधानों की कोशिश की है , लेकिन स्पष्ट रूप से setExtendedState(getExtendedState()|Frame.MAXIMIZED_BOTH);कॉल करने के बाद सीधे कॉल setVisible(true);करना मेरे पर्यावरण के लिए काम नहीं करता है (विंडोज 10, जेडीके 1.8, मेरा टास्कबार मेरी स्क्रीन के दाईं ओर है)। इस तरह से करना अभी भी बाईं, दाईं और नीचे की तरफ एक छोटी सी जगह छोड़ता है।

हालांकि मेरे लिए क्या काम किया, setExtendedState(...जब खिड़की सक्रिय है, तो कॉल कर रहा है, जैसे:

public class SomeFrame extends JFrame {

    public SomeFrame() {
        // ...
        setVisible(true);
        setResizable(true);
        // if you are calling setSize() for fallback size, do that here
        addWindowListener (
            new WindowAdapter() {
                private boolean shown = false;
                @Override
                public void windowActivated(WindowEvent we) {
                    if(shown) return;
                    shown = true;
                    setExtendedState(getExtendedState()|JFrame.MAXIMIZED_BOTH);
                }
            }
        );
    }
}

1
मेरे पास विंडोज 10 पर स्क्रीन के निचले हिस्से पर टास्कबार के साथ एक समान मुद्दा था। विंडो बहुत अधिक थी और इसलिए टास्कबार द्वारा ओवरलैप किया गया था। आपका समाधान काम कर गया!
ConveniencePatterns

0

मैंने इस कोड का उपयोग करते हुए समाप्त किया:

public void setMaximized(boolean maximized){
    if(maximized){
        DisplayMode mode = this.getGraphicsConfiguration().getDevice().getDisplayMode();
        Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration());
        this.setMaximizedBounds(new Rectangle(
                mode.getWidth() - insets.right - insets.left, 
                mode.getHeight() - insets.top - insets.bottom
        ));
        this.setExtendedState(this.getExtendedState() | JFrame.MAXIMIZED_BOTH);
    }else{
        this.setExtendedState(JFrame.NORMAL);
    }
}

इस विकल्प ने सभी विकल्पों में से सबसे अच्छा काम किया, जिसमें कई मॉनिटर समर्थन शामिल हैं। इसका एकमात्र दोष यह है कि टास्कबार ऑफसेट का उपयोग सभी मॉनिटरों पर किया जाता है कुछ कॉन्फ़िगरेशन।


0

@kgiannakakis उत्तर पूरी तरह से सही है, लेकिन अगर कोई इस समस्या में फंस गया है और लिनक्स पर जावा 6 का उपयोग करता है (उदाहरण के लिए, मिंट 19 दालचीनी), MAXIMIZED_BOTH राज्य कभी-कभी लागू नहीं होता है।

आप इस स्थिति को सेट करने के बाद कॉल () विधि को कॉल करने का प्रयास कर सकते हैं ।

कोड उदाहरण:

public MainFrame() {
    setContentPane(contentPanel); //some JPanel is here
    setPreferredSize(new Dimension(1200, 800));
    setMinimumSize(new Dimension(1200, 800));
    setSize(new Dimension(1200, 800));
    setExtendedState(JFrame.MAXIMIZED_BOTH);
    pack();
}

यह आवश्यक नहीं है यदि आप विंडोज पर जावा 7+ या जावा 6 का उपयोग कर रहे हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.