Java how to make JFrames maximally but not resizable

Initially (see my previous question " Java, how to get JFrames to start as a maximally maximized window "). I wanted to create a window that starts with maximization. This code does the following:

public static void main(String[] args)  {

JFrame frame = new JFrame();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);

}

However, if this window is restored, it will become a practically non-existent bar. To solve this problem, I set the window size using setSize (). This works, but is another problem, the window can still be resized.

To solve this problem, I set setResizable (false); and this is my code:

public static void main(String[] args) {

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    JFrame frame = new JFrame("Jedia");
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setSize(screenSize);
    frame.setResizable(false);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

However, now the window starts at the specified size (rather than maximizes) and cannot be restored.

, : , , , ? , ?

+5
4

, : , . , :

public static void main(String[] args) {

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    JFrame frame = new JFrame("Jedia");
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setSize(screenSize);
    frame.setVisible(true);    // FIRST visible = true
    frame.setResizable(false); // THEN  resizable = false
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

, , , . ( , . , , , , .)

, Windows 7 , . , . , , , . (): @David Kroukamp , ComponentListener. setResizable(false) , Windows 7, - , , , .)

, . , (, , , ). , , . JFrame, , Window.

, , . - ( , , , ), ( ), pack() . .

, . main , Swing Swing EDT SwingUtils.invokeLater().

+3

, JFrame.

, Swing .

, .

public static void main(String[] args) {        
    final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            JFrame frame = new JFrame("Jedia");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(screenSize);
            frame.setResizable(false);
            frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
            frame.setVisible(true);
        }   
    });
}
+1

? JDK1.6/JDK1.7 Win7, ( , ).

0

, . ( ):

public static void main(String[] args) {

    final JFrame frame = new JFrame("Jedia");
    frame.setMinimumSize(new Dimension(600, 400));
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setVisible(true);

    frame.addComponentListener(new ComponentListener(){

        @Override
        public void componentHidden(ComponentEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void componentMoved(ComponentEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void componentResized(ComponentEvent e) {

            if (!e.paramString().startsWith("COMPONENT_RESIZED (-8,-8"))
            frame.setSize(new Dimension(600, 400));
        }

        @Override
        public void componentShown(ComponentEvent e) {
            // TODO Auto-generated method stub

        }
    }); 
}

e.paramString() , "COMPONENT_RESIZED (-8, -8, [screensize])", .

0
source

All Articles