JFrame Maximizar ventana

4 minutos de lectura

avatar de usuario
No

Estoy armando una animación rápida y sucia usando swing. Me gustaría que la ventana se maximice. ¿Cómo puedo hacer eso?

avatar de usuario
kiannakakis

Siempre que esté extendiendo JFrame:

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

  • Es una mala práctica acceder a un campo estático a través de una instancia. Usar JFrame.MAXIMIZED_BOTH en cambio.

    – nimcap

    15 de diciembre de 2010 a las 8:33

  • ¡Error enorme y masivo y problemas con lo anterior! (Bueno, está bien, advertencias menores sin mayores consecuencias…) ¡Debería ser Frame.MAXIMIZED_BOTH, no JFrame.MAXIMIZED_BOTH! 🙂

    – Manio

    16 de mayo de 2011 a las 0:47

  • ¿Por qué llamas a setVisible(true) primero? ¿Es significativo? También funciona bien sin (ubuntu).

    – Avr Dragón

    26 de septiembre de 2012 a las 11:25

  • Sin que setVisible(true) primero, el marco no tiene el tamaño correcto. Lo probé tanto antes como después. setExtendedState()y setVisible() debe ser el primero.

    – mjibson

    16 de diciembre de 2012 a las 4:27

  • @Crusader Absolutamente ningún problema aquí en realidad, ya que ambos se refieren al mismo campo constante (JFrame hereda de Frame).

    – Guillermo Polet

    21 de junio de 2013 a las 7:54

Algo como 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);
    }
}

  • Cuál es el | ¿por? ¿Hace uno, y si eso falla, hace el otro? ¿O está indicando la elección del programador (es decir, elegir uno de A | B para esta llamada?) No he visto esta sintaxis antes.

    – AncientSwordRage

    27 de febrero de 2013 a las 15:58

  • @Pureferret es el operador “OR inclusivo a nivel de bit”, que copia un bit si existe en cualquiera de los operandos. (docs.oracle.com/javase/tutorial/java/nutsandbolts/… o tutorialspoint.com/java/java_basic_operators.htm)

    – VoC

    27 de febrero de 2013 a las 16:11


avatar de usuario
usuario54579

Si está utilizando un JFrame, intente esto

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

Qué tal si JFrame.setExtendedState(JFrame.MAXIMIZED_BOTH)?

avatar de usuario
frame_max_show

me gusta esta versión:

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);
    }
}

  • Me encanta esta versión. Muchas gracias.

    – SWIIWII

    15 de marzo de 2017 a las 0:13

avatar de usuario
Khaled.K

La forma de configurar JFrame en pantalla completa es configurar MAXIMIZED_BOTH opción que significa MAXIMIZED_VERT | MAXIMIZED_HORIZque configuran respectivamente el marco para maximizar vertical y horizontalmente

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);
    }
}

  • Me encanta esta versión. Muchas gracias.

    – SWIIWII

    15 de marzo de 2017 a las 0:13

He probado las soluciones en este hilo y las de aquí, pero simplemente llamando setExtendedState(getExtendedState()|Frame.MAXIMIZED_BOTH); justo después de llamar setVisible(true); aparentemente no funciona para mi entorno (Windows 10, JDK 1.8, mi barra de tareas está en el lado derecho de mi pantalla). Hacerlo de esta manera aún deja un pequeño espacio a la izquierda, derecha e inferior.

Sin embargo, lo que funcionó para mí es llamar setExtendedState(... cuando la ventana está activada, así:

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);
                }
            }
        );
    }
}

  • Tuve un problema similar en Windows 10 con la barra de tareas en la parte inferior de la pantalla. La ventana estaba demasiado alta y, por lo tanto, superpuesta por la barra de tareas. ¡Tu solución funcionó!

    – Patrones de conveniencia

    9 de mayo de 2020 a las 11:38

¿Ha sido útil esta solución?