JFrame full screen

Mattepuffo's logo
JFrame full screen

JFrame full screen

Per rendere un JFrame a schermo intero ci sono diversi modi.

Qui vi spiego due modi per avviare un JFrame massimizzato e uno per renderlo a schermo intero.

Cominciamo proprio da quest'ultimo:

import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;

public class DrawPanel extends JFrame {

    public DrawPanel() {
        super("Draw panel");
        GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice cc = ge.getDefaultScreenDevice();
        setVisible(true);
        cc.setFullScreenWindow(this);
    }
}

Nel costruttore del nostro JFrame creiamo un oggetto di classe GraphicsEnvironment il metodo getLocalGraphicsEnvironment().

Sull'oggetto creato richiamiamo il metodo getDefaultScreenDevice() che altro non fa che identificare lo schermo in uso.

Infine setFullScreenWindow mette la finestra in full size (come si evince dallo stesso nome del metodo).

Venendo alla massimizzazione della finestra nello schermo, abbiamo due modi: uno "casareccio" e uno no.

Quello casareccio prevede di calcolare le misure dello schermo e di passarle come misura al frame:

import java.awt.Toolkit;
import javax.swing.JFrame;

public class DrawPanel extends JFrame {

    public DrawPanel() {
        super("Draw panel");
        int width = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
        int height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
        setSize(width, height);
        setVisible(true);
    }
}

Non c'è molto da spiegare: attraverso getScreenSize di Toolkit calcoliamo le dimensioni dello schermo e le passiamo a setSize del JFrame.

Io però preferisco questo metodo:

import javax.swing.JFrame;

public class DrawPanel extends JFrame {

    public DrawPanel() {
        super("Draw panel");
        setVisible(true);
        setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
}

Si tratta del metodo setExtendedState(int) di JFrame.

Al metodo va passato un valore int; in questo caso gli passo JFrame.MAXIMIZED_BOTH per massimizzare sia altezza che lunghezza.

Ci sono altre costanti se volete.

Unica cosa a cui stare attenti è dove richiamare questo metodo: dopo setVisible(true).

Se ad esempio richiamate il JFrame da un'altra classe scrivete così:

DrawPanel panel = new DrawPanel(percorso);    
panel.setVisible(true);
panel.setExtendedState(JFrame.MAXIMIZED_BOTH);

Infine ultima nota se usate i JFrame form di NetBeans.

Questo IDE nel costruttore richiama il metodo initComponents() dove costruisce tutta l'interfaccia.

Se volete usare setExtendedState scrivete così:

import javax.swing.JFrame;

public class DrawPanel extends JFrame {

    public DrawPanel() {

        initComponents();

        setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
}

Ringrazio satifal del forum HTML.it per alcune dritte!


Condividi

2 Commenti

  • fermat

    ciao! prova con questa istruzione: myFrame.setUndecorated(true);

    18/05/2015
  • CAleb

    me lo rende sepre max con il bordo e se lo voglio senza bordo?

    16/05/2015

Commentami!