JFrame en Java plein écran

je vais bientôt faire un projet et je vais devoir utiliser le mode plein écran .

il dessinera quelques graphiques dans la fenêtre. Il serait souhaitable que j'utilise JFrame ou quelque chose de similaire.

Je ne sais pas quelle sera la résolution finale de l'écran. S'il vous plaît dites-moi si la graphicss sera automatiquement redimensionnée?

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?
85
demandé sur Rufflewind 2012-07-20 02:39:56

10 réponses

ajouter:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
frame.setUndecorated(true);
frame.setVisible(true);
169
répondu Reimeus 2016-06-22 15:54:10

Si vous voulez mettre votre image en mode plein écran (comme un film en plein écran), vérifiez ces réponses.

les classes java.awt.GraphicsEnvironment et java.awt.GraphicsDevice sont utilisées pour mettre une application en mode plein écran sur un écran (le dispositif).

p.ex.:

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

}
32
répondu Paul Vargas 2017-05-23 12:34:50

Utilisation setExtendedState(int state) , les cas où l'état serait JFrame.MAXIMIZED_BOTH .

9
répondu Eng.Fouad 2012-07-19 22:40:52

Une façon est d'utiliser l'État Étendu. Cela demande au système d'exploitation sous-jacent de maximiser le JFrame.

setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH);

autre approche serait de maximiser manuellement l'écran pour votre exigence.

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

Mais cela a des pièges dans Ubuntu OS. Le travail autour, j'ai trouvé était présent.

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

dans Fedora le problème ci-dessus n'est pas présent. Mais il ya des complications en cause avec Gnome ou KDE . Donc mieux vaut être prudent. Espérons que cette aide.

6
répondu Chan 2012-07-20 02:32:53

il suffit d'utiliser ce 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;
            }
        }
    }
}

j'espère que cela aidera.

5
répondu PeGiannOS 2015-08-17 15:09:26

la solution la plus facile de tous les temps:

                for (Window w : Window.getWindows()) {
                    GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(w);
                }
3
répondu Ariel Terrani 2016-01-30 23:40:13

il vous aidera à utiliser l'instant de votre objet de la trame

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);

2
répondu Jerin Stephen 2016-09-17 15:58:50

tout d'Abord, c'est la résolution que vous souhaitez utiliser, 1650,1080 .

ajouter maintenant:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

si vous avez des problèmes avec les composants sur la JFrame, puis après avoir ajouté tous les composants en utilisant la méthode frame.add(component) , ajouter l'énoncé suivant.

frame.pack();
2
répondu Saad K 2018-02-10 00:36:19

les valeurs soulignées que je veux dire:

! JFrame-Propriétés

0
répondu Rudi Wijaya 2014-11-18 03:53:21

mettre 2 propriétés ci-dessous:

  1. extendedState = 6
  2. redimensionnables = true

ça me va.

-1
répondu Rudi Wijaya 2014-11-14 08:35:43