2009-04-06 5 views
5

Ich arbeite an einer Java-Swing-Anwendung, die in einem Psychologie-Experiment verwendet wird, und die Forscher haben gefordert, dass ich das Programm "den Bildschirm ausbleiche", damit es keine äußeren Reize für den Benutzer gibt. Sie möchten, dass die Swing-App wirklich bildschirmfüllend ist und keine Titelleiste oder Schaltflächen zum Minimieren/Maximieren/Schließen oben enthält.Wie kann ich eine Java Swing App erstellen, die die Windows Titelleiste abdeckt?

Die Software wird in einer Windows XP-Umgebung ausgeführt werden, mit JavaSE 6.

Wie kann ich dies tun, und ein Code-Snippet geben Sie bitte ggf..

Danke!

Antwort

11

Verwenden Sie die Vollbild-Java-APIs?

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

Können Sie (kurz und knapp) erklären, wie diese APIs verwendet werden, anstatt nur Links zu veröffentlichen? Ich werde natürlich die Links lesen, aber immer noch ... – HipsterZipster

+0

Vollbildmodus verwendet ein anderes Paradigma als normale Swing-Anwendungen. Es ist für Dinge wie Spiele oder Bildschirmschoner gedacht. Wie der Link sagt: "Die meisten Vollbild-Exklusivanwendungen eignen sich besser für nicht dekorierte Fenster." Es ist eine Option, aber Sie müssen mehr Code selbst schreiben. – erickson

+0

Das ist eine Mischung aus beiden Links, ungetestet. Hilft? – JeeBee

9

Verwenden Sie die setUndecorated(true) Eigenschaft. Beachten Sie, dass dies getan werden muss, bevor der Rahmen sichtbar gemacht wird.

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

Ich weiß, dieser Thread ist alt, aber ich fand es während der Suche, wie ich die gleiche Sache zu tun. Ich konnte keine Lösungen finden, die ich verwenden wollte, also kam ich auf diese Idee. Ich fand heraus, dass die untenstehende Lösung nicht nur funktioniert, sondern auch viel einfacher ist als die obigen Antworten.

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