web-dev-qa-db-fra.com

JFrame Maximize window

Je suis en train de mettre en place une animation rapide et sale en utilisant swing. Je voudrais que la fenêtre soit maximisée. Comment puis je faire ça?

80
Nope

Pourvu que vous étendiez JFrame:

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

Quelque chose comme 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);
    }
}
17
VonC

Si vous utilisez un JFrame, essayez ceci

JFrame frame = new JFrame();
//...
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
12
user54579
7
Zach Scrivena

Cette page peut fournir de l'aide

Maximisation du cadre JF

2
Greg Reynolds

j'aime cette version:

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

J'ai fini par utiliser ce code:

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

Cette option fonctionnait de manière optimale, y compris la prise en charge de plusieurs moniteurs. Le seul défaut que cela a est que le décalage de la barre des tâches est utilisé sur tous les moniteurs dans certaines configurations.

0
Wouter

J'ai essayé les solutions de ce fil et celles ici , mais appeler simplement setExtendedState(getExtendedState()|Frame.MAXIMIZED_BOTH); juste après avoir appelé setVisible(true); ne fonctionne apparemment pas pour mon environnement (Windows 10, JDK 1.8, ma barre des tâches est à droite de mon écran). ). Le faire de cette façon laisse toujours un espace minuscule à gauche, à droite et en bas.

Ce qui a fonctionné pour moi cependant, c'est d'appeler setExtendedState(... quand la fenêtre est activée, comme ceci:

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);
                }
            }
        );
    }
}
0
TT.