2010-02-27 14 views
15

Come si crea uno schermo intero JComponent (pannello, cornice, finestra, ecc.), In modo che si sovrapponga anche a tutto sullo schermo compresa la barra di avvio di Windows?Realizzazione di un pannello Java a schermo intero

Non voglio modificare la risoluzione o qualsiasi altra cosa con il dispositivo grafico come bitdepth ecc. Voglio solo sovrapporre tutto il resto.

+1

Cosa c'è che non va nelle risposte date finora? – Thomas

+0

Sì, sul serio. Dallo ad Adamski: non otterrai una risposta migliore. –

+0

Voglio dire, finché non dai un indizio su quello che non ti piace delle risposte attuali, nessuno sarà in grado (o disposto) di inventare qualcos'altro. – Thomas

risposta

11

È possibile provare alcuni dei codes in this page, permettendo un contenitore per riempire lo schermo (quindi non è una soluzione per un singolo componente , ma per una serie di componenti all'interno di un contenitore come un JFrame)

public class MainWindow extends JFrame 
{ 
    public MainWindow() 
    { 
    super("Fullscreen"); 
    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(l); 
     } 
    }); 
    } 
    ... 
} 
+0

Puoi spiegare perché questo funziona. Specificamente la parte nel runnable, come le righe che seguono 'l.x - = p.x;'. Funziona, ma voglio comprenderlo pienamente. – Connorelsea

+0

@Connorelsea Potrebbe essere più facile chiederlo in una domanda separata: dopo 5 + anni, e non ricordare tutti i dettagli. – VonC

17

Verificare this tutorial che descrive l'API della modalità a schermo intero di Java.

Codice di esempio (tratto dal tutorial). Si noti che il codice opera su un Window quindi è necessario incorporare lo JPanel con un Window (ad esempio JFrame) per fare ciò.

GraphicsDevice myDevice; 
Window myWindow; 

try { 
    myDevice.setFullScreenWindow(myWindow); 
    ... 
} finally { 
    myDevice.setFullScreenWindow(null); 
} 
1

Avevo bisogno di cercare molto, di fare lo stesso. Qui è completamente una versione funzionante di esso da passaggi, in modo che io possa trovarlo anche in seguito, e usarlo.

Fase 1: creare un file chiamato fullscreen.java

Fase 2: copiare il codice e incollarlo in quanto è:

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

public class fullscreen extends Window 
{ 
    private Button button; 

    public fullscreen() 
    { 
    super(new Frame()); 
    button = new Button("Close"); 
    button.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
     System.exit(0); 
     } 
    }); 

    setLayout(new FlowLayout()); 
    add(button); 

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    setBounds(0,0,screenSize.width, screenSize.height); 
    } 

    public static void main(String[] args) 
    { 
    // This will take over your whole screen tested and works in my: 
    // Fedora 12/13/14 
    // CentOS 5.0 
    // if this works for you, in other platforms, please leave a comments which OS it worked. 
    // happy coding! 
    new fullscreen().setVisible(true); 
    } 

} 

Fase 3: compilare il codice ed eseguire

Fatto.

0

Se fossi in te, proverei a far sì che Java non disegna il bordo del Jframe, quindi fallo prendere tutto lo schermo.

import java.awt.GraphicsEnvironment; 
import java.awt.Rectangle; 

import javax.swing.JFrame; 


public class FenNoBorder extends JFrame { 

    public FenNoBorder() { 
     setUndecorated(true); 
     setVisible(true); 
     GraphicsEnvironment graphicsEnvironment=GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     Rectangle maximumWindowBounds=graphicsEnvironment.getMaximumWindowBounds(); 
     setBounds(maximumWindowBounds); 
    } 
} 
Problemi correlati