In einem anderen Thread erklärte ich, dass ich meine GUIs gerne zentrieren würde, indem ich so etwas mache:
JFrame frame = new JFrame("Foo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new HexagonGrid());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
Aber Andrew Thompson hatte eine andere Meinung, stattdessen anzurufen
frame.pack();
frame.setLocationByPlatform(true);
und fragende Köpfe wollen wissen warum?
java
swing
user-interface
Luftkissenfahrzeug voller Aale
quelle
quelle
Antworten:
Für mich sieht eine GUI in der Mitte des Bildschirms so aus ... "splash-screen'ish". Ich warte immer darauf, dass sie verschwinden und die echte GUI erscheint!
Seit Java 1.5 haben wir Zugriff auf
Window.setLocationByPlatform(boolean)
. welche..Schauen Sie sich den Effekt dieses Beispiels an, das 3 GUIs an die vom Betriebssystem gewählten Standardpositionen bringt - unter Windows 7, Linux mit Gnome und Mac OS X.
(3 Lose) 3 GUIs ordentlich gestapelt. Dies stellt für den Endbenutzer den Weg der geringsten Überraschung dar, da das Betriebssystem auf diese Weise möglicherweise 3 Instanzen des Standard-Nur-Text-Editors (oder sonst etwas) positioniert. Mein Dank geht an trashgod für Linux & Mac. Bilder.
Hier ist der einfache verwendete Code:
quelle
ii
eher als nuri
? Entspricht das einer Konvention oder ist es eine persönliche Präferenz (oder vielleicht etwas ganz anderes)?ii
anstelle von verwendei
. Wenn ich teilnehmen Wettbewerbe in der Programmierung, muss ich oft für die Loop - Index suchen, sagen wir,+1
oder-1
von ihr durch einen Fehler beheben ab. In diesen Fällen ist die Sucheii
viel einfacher als die Suchei
, unabhängig davon, welchen Editor ich verwendet habe. Ebenso verwende ichjj
undkk
für die verschachtelten Schleifenindizes. :)Ich stimme voll und ganz zu, dass dies
setLocationByPlatform(true)
der beste Weg ist, die Position eines neuen JFrames anzugeben, aber bei einem Dual-Monitor-Setup können Probleme auftreten. In meinem Fall wird der untergeordnete JFrame auf dem "anderen" Monitor erzeugt. Beispiel: Ich habe meine Haupt-GUI auf Bildschirm 2, starte einen neuen JFrame mitsetLocationByPlatform(true)
und er wird auf Bildschirm 1 geöffnet. Hier ist also eine vollständigere Lösung, denke ich:quelle