2010-09-16 1 views
5

mitWie erhalte ich die reale nutzbare Auflösung

Toolkit.getDefaultToolkit().getScreenSize()

i die Bildschirmgröße tun was geht.

Aber normalerweise ist das nicht die verfügbare Größe, die ich für mein eigenes Programm habe, denn auf dem Mac gibt es oben eine Menüleiste und unten eine Iconleiste. Windows hat eine Iconleiste. Wie bekomme ich den wirklich verfügbaren Platz?

Antwort

9

Von Java forum:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
Rectangle bounds = ge.getMaximumWindowBounds(); 

Jetzt haben Sie die Grenzen sans plattformabhängigen Desktop-Dekorationen. Ich habe keinen Mac, also habe ich nur verifiziert, dass es auf WinXP/JDK6 funktioniert.

Beachten Sie, dass, wenn Sie Taskleiste automatisch ausblenden, die Grenzen keine Taskleiste enthalten, die korrekt ist.

+0

ja danke, das funktioniert einwandfrei.Auf Mac OSX auch. –

+3

Ich würde mich freuen, wenn Sie die Antwort dann akzeptieren können. –

+0

@Geoffrey Dies hat den Nebeneffekt, das Look and Feel der Anwendung zu ändern, richtig? Ist das notwendig? Ich verstehe nicht, welchen Effekt es auf die lokale 'GraphicsEnvironment' hat. – muffin

1

Ich bin nicht sicher, ob dies funktioniert, aber versuchen Sie stattdessen die GraphicsConfiguration/GraphicsDevice. Es ist unter Umständen nicht möglich, eine Bounding Box zu erhalten, die das Dock unter OS X abwertet, da der Bereich des Docks immer noch als Bildschirmbereich betrachtet wird. Ich kann Fenster darüber bewegen. Ich kann das Dock auch verschieben, um auf der Seite und nicht am unteren Rand des Bildschirms zu sein (dasselbe gilt für die Windows-Taskleiste).

http://download.oracle.com/javase/6/docs/api/java/awt/GraphicsDevice.html

+0

Meine Antwort ist nur ein winziger Schritt vorwärts von diesem. –