2009-04-06 3 views
5

Sto lavorando su un'applicazione java swing che verrà utilizzata in un esperimento di psicologia e i ricercatori hanno chiesto di rendere il programma "nero sullo schermo" in modo che non ci siano stimoli esterni per l'utente. Vogliono che l'app dello swing sia veramente a schermo intero e senza alcun tipo di barra del titolo o minimizza/massimizza/chiudi i pulsanti in alto.Come posso creare un'app per Java Swing che copra la barra del titolo di Windows?

Il software sarà in esecuzione in un ambiente Windows XP utilizzando JavaSE 6.

Come posso fare questo e si prega di fornire un frammento di codice, se applicabile.

Grazie!

risposta

11

Utilizzare le API Java a schermo intero?

http://java.sun.com/docs/books/tutorial/extra/fullscreen/exclusivemode.html

http://www.artificis.hu/2006/03/16/java-awtswing-fullscreen

JFrame fr = new JFrame(); 
fr.setResizable(false); 
if (!fr.isDisplayable()) { 
    // Can only do this when the frame is not visible 
    fr.setUndecorated(true); 
} 
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
try { 
    if (gd.isFullScreenSupported()) { 
    gd.setFullScreenWindow(fr); 
    } else { 
    // Can't run fullscreen, need to bodge around it (setSize to screen size, etc) 
    } 
    fr.setVisible(true); 
    // Your business logic here 
} finally { 
    gd.setFullScreenWindow(null); 
} 
+0

Puoi spiegare (in modo conciso) come vengono utilizzate queste API invece di pubblicare semplicemente i link? Leggerò ovviamente i collegamenti, ma comunque ... – HipsterZipster

+0

La modalità a schermo intero utilizza un paradigma diverso dalle normali applicazioni Swing. È destinato a cose come giochi o screen saver. Come dice il link, "La maggior parte delle applicazioni esclusive a schermo intero sono più adatte all'uso di finestre non decorate." È un'opzione, ma ti richiederà di scrivere più codice tu stesso. – erickson

+0

Questo è un mix di entrambi i collegamenti, non testati. Aiuta? – JeeBee

9

Utilizzare la proprietà setUndecorated(true). Si noti che questo deve essere fatto prima di rendere visibile la cornice.

JFrame frame = new JFrame(); 
Toolkit tk = Toolkit.getDefaultToolkit(); 
frame.setBounds(new Rectangle(new Point(0, 0), tk.getScreenSize())); 
frame.setUndecorated(true); 
frame.setVisible(true); 
0

So che questo thread è vecchio, ma ho trovato durante la ricerca su come fare la stessa cosa di me. Non sono riuscito a trovare alcuna soluzione che volevo usare, quindi ho pensato a questo. Ho scoperto che la soluzione seguente non solo funziona, ma è anche molto più semplice delle risposte di cui sopra.

JFrame frame = new JFrame(); 
frame.setResizable(false); 
frame.setUndecorated(true); 
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
frame.setSize(dim); 
frame.setVisible(true);