W innym wątku stwierdziłem, że lubię wyśrodkować moje GUI, robiąc coś takiego:
JFrame frame = new JFrame("Foo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new HexagonGrid());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
Ale Andrew Thompson miał inne zdanie, zamiast tego zadzwonić
frame.pack();
frame.setLocationByPlatform(true);
a dociekliwe umysły chcą wiedzieć, dlaczego?
java
swing
user-interface
Poduszkowiec pełen węgorzy
źródło
źródło
Odpowiedzi:
Dla mnie GUI na środku ekranu wygląda tak… „splash-screen'ish”. Czekam, aż znikną i pojawi się prawdziwy GUI!
Od Java 1.5 mamy dostęp do
Window.setLocationByPlatform(boolean)
. który..Spójrz na efekt tego przykładu, który ustawia 3 GUI w domyślnych pozycjach wybranych przez system operacyjny - na Windows 7, Linux z Gnome i Mac OS X.
(3 partie) 3 starannie ułożone GUI. Stanowi to „ścieżkę najmniejszego zaskoczenia” dla użytkownika końcowego, ponieważ w ten sposób system operacyjny może umieścić 3 wystąpienia domyślnego edytora zwykłego tekstu (lub cokolwiek innego, jeśli o to chodzi). Dziękuję trashgod za Linuksa i Maca. zdjęcia.
Oto zastosowany prosty kod:
źródło
ii
raczej zmiennai
? Czy jest to zgodne z jakąś konwencją, czy jest to osobiste preferencje (a może coś zupełnie innego)?ii
zamiasti
. Kiedy biorę udział w konkursach programowania, często trzeba szukać indeksu pętli do, powiedzmy,+1
lub-1
z niej naprawić off by one. W takich przypadkach wyszukiwanieii
jest znacznie łatwiejsze niż wyszukiwaniei
, niezależnie od używanego edytora. Podobnie używamjj
ikk
dla indeksów zagnieżdżonych pętli. :)Całkowicie się zgadzam, że
setLocationByPlatform(true)
jest to najładniejszy sposób określenia nowej pozycji JFrame, ale w konfiguracji z dwoma monitorami możesz mieć problemy. W moim przypadku podrzędna ramka JFrame jest generowana na „drugim” monitorze. Przykład: Moje główne GUI jest na ekranie 2, zaczynam nową ramkę JFramesetLocationByPlatform(true)
i otwiera się ona na ekranie 1. Tak więc myślę, że tutaj jest bardziej kompletne rozwiązanie:źródło