web-dev-qa-db-de.com

JFrame in Vollbild-Java

Ich werde in Kürze ein Projekt machen und muss den Vollbildmodus verwenden.

Es werden einige Grafiken in das Fenster gezeichnet. Es wäre praktisch, wenn ich JFrame oder etwas Ähnliches verwende. 

Ich weiß nicht, wie die endgültige Auflösung des Bildschirms sein wird. Bitte sagen Sie mir, ob die Grafik automatisch neu skaliert wird.

JFrame jf = new JFrame();
jf.setSize(1650,1080);
//make it fullscreen;
//now is everything is going to be rescaled so it looks like the original?
88
Yoda

Hinzufügen:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
frame.setUndecorated(true);
frame.setVisible(true);
177
Reimeus

Wenn Sie den Vollbildmodus im Vollbildmodus verwenden möchten (z. B. einen Film im Vollbildmodus), überprüfen Sie diese Antworten.

Die Klassen Java.awt.GraphicsEnvironment und Java.awt.GraphicsDevice werden verwendet, um eine App im Vollbildmodus auf einem Bildschirm (dem Dispositiv) zu schalten.

z.B.:

static GraphicsDevice device = GraphicsEnvironment
        .getLocalGraphicsEnvironment().getScreenDevices()[0];

public static void main(String[] args) {

    final JFrame frame = new JFrame("Display Mode");
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.setUndecorated(true);

    JButton btn1 = new JButton("Full-Screen");
    btn1.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            device.setFullScreenWindow(frame);
        }
    });
    JButton btn2 = new JButton("Normal");
    btn2.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            device.setFullScreenWindow(null);
        }
    });

    JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
    panel.add(btn1);
    panel.add(btn2);
    frame.add(panel);

    frame.pack();
    frame.setVisible(true);

}
33
Paul Vargas

Verwenden Sie setExtendedState(int state) , wobei der Status JFrame.MAXIMIZED_BOTH sein würde.

9
Eng.Fouad

Eine Möglichkeit ist die Verwendung des erweiterten Zustands. Dadurch wird das zugrunde liegende Betriebssystem aufgefordert, den JFrame zu maximieren.

setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);

Ein anderer Ansatz wäre, den Bildschirm für Ihre Anforderung manuell zu maximieren. 

    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(100, 100, (int) dim.getWidth(), (int) dim.getHeight());
    setLocationRelativeTo(null);

Dies hat jedoch Probleme mit Ubuntu OS. Die Arbeit, die ich fand, war folgende.

    if (SystemHelper.isUnix()) {
        getContentPane().setPreferredSize(
                Toolkit.getDefaultToolkit().getScreenSize());
        pack();
        setResizable(false);
        show();

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Point p = new Point(0, 0);
                SwingUtilities.convertPointToScreen(p, getContentPane());
                Point l = getLocation();
                l.x -= p.x;
                l.y -= p.y;
                setLocation(p);
            }
        });

    }
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(100, 100, (int) dim.getWidth(), (int) dim.getHeight());
    setLocationRelativeTo(null);

In Fedora ist das obige Problem nicht vorhanden. Es gibt jedoch Komplikationen bei Gnome oder KDE . Also sei besser vorsichtig. Hoffe das hilft.

6
Chan

Verwenden Sie einfach diesen Code: 

import Java.awt.event.*;
import javax.swing.*;

public class FullscreenJFrame extends JFrame {
    private JPanel contentPane = new JPanel();
    private JButton fullscreenButton = new JButton("Fullscreen Mode");
    private boolean Am_I_In_FullScreen = false;
    private int PrevX, PrevY, PrevWidth, PrevHeight;

    public static void main(String[] args) {
        FullscreenJFrame frame = new FullscreenJFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 500);
        frame.setVisible(true);
    }

    public FullscreenJFrame() {
        super("My FullscreenJFrame");

        setContentPane(contentPane);

        // From Here starts the trick
        FullScreenEffect effect = new FullScreenEffect();

        fullscreenButton.addActionListener(effect);

        contentPane.add(fullscreenButton);
        fullscreenButton.setVisible(true);
    }

    private class FullScreenEffect implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            if (Am_I_In_FullScreen == false) {
                PrevX = getX();
                PrevY = getY();
                PrevWidth = getWidth();
                PrevHeight = getHeight();

                // Destroys the whole JFrame but keeps organized every Component
                // Needed if you want to use Undecorated JFrame dispose() is the
                // reason that this trick doesn't work with videos.
                dispose();
                setUndecorated(true);

                setBounds(0, 0, getToolkit().getScreenSize().width,
                        getToolkit().getScreenSize().height);
                setVisible(true);
                Am_I_In_FullScreen = true;
            } else {
                setVisible(true);
                setBounds(PrevX, PrevY, PrevWidth, PrevHeight);
                dispose();
                setUndecorated(false);
                setVisible(true);
                Am_I_In_FullScreen = false;
            }
        }
    }
}

Ich hoffe das hilft.

5
PeGiannOS

Einfachste Lösung aller Zeiten:

for ( Window w : Window.getWindows() ) {
    GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow( w );
}
4
Ariel Terrani

es wird Ihnen helfen, Ihr Objekt im Augenblick des Rahmens zu verwenden

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

2
Jerin Stephen

Das ist zunächst die Auflösung, die Sie verwenden möchten, 1650,1080.

Jetzt hinzufügen:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

Wenn Sie Probleme mit den Komponenten auf dem JFrame haben, fügen Sie nach dem Hinzufügen aller Komponenten mithilfe der frame.add(component)-Methode die folgende Anweisung hinzu.

frame.pack();
2
Saad K
JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(Toolkit.getDefaultToolkit().getScreenSize()));

Dadurch wird der Rahmen nur so groß wie der Bildschirm

0
Sly

Werte betont, dass ich meine:

! JFrame - Eigenschaften

0
Rudi Wijaya

Sie brauchen nur Folgendes:

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

Wenn Sie den Modifikator MAXIMIZED_BOTH verwenden, wird das gesamte Fenster (Höhe und Breite) maximiert.

Es gibt einige, die dies vorschlagen:

frame.setUndecorated(true);

Ich kann es nicht empfehlen, da Ihr Fenster keine Kopfzeile hat, also keine Schaltfläche zum Schließen/Wiederherstellen/Minimieren.

0
Kyon Perez