it-swarm.com.de

Fenster JFrame Maximize

Ich setze eine schnelle und schmutzige Animation mit Swing zusammen. Ich möchte, dass das Fenster maximiert wird. Wie kann ich das machen?

80
Nope

Vorausgesetzt, Sie erweitern JFrame:

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

So etwas wie 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

Wenn Sie einen JFrame verwenden, versuchen Sie dies

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

Diese Seite kann etwas Hilfe bieten

JFrame-Maximierung

2
Greg Reynolds

ich mag diese 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

Am Ende habe ich diesen Code verwendet:

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

Diese Optionen haben am besten funktioniert, einschließlich der Unterstützung mehrerer Monitore. Der einzige Nachteil ist, dass der Taskleistenversatz bei allen Monitoren in einigen Konfigurationen verwendet wird.

0
Wouter

Ich habe die Lösungen in diesem und den folgenden Threads ausprobiert hier , aber das einfache Aufrufen von setExtendedState(getExtendedState()|Frame.MAXIMIZED_BOTH); direkt nach dem Aufrufen von setVisible(true); funktioniert für meine Umgebung anscheinend nicht (Windows 10, JDK 1.8, meine Taskleiste befindet sich auf der rechten Seite meines Bildschirms) ). Wenn Sie dies auf diese Weise tun, bleibt links, rechts und unten immer noch ein winziger Raum.

Was für mich jedoch funktioniert hat, ist der Aufruf von setExtendedState(..., wenn das Fenster aktiviert ist, wie folgt:

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.