Jaki jest najłatwiejszy sposób wyśrodkowania a java.awt.Window
, na przykład a JFrame
lub a JDialog
?
java
swing
user-interface
awt
Andrew Swan
źródło
źródło
setLocation()
,setLocationRelativeTo()
isetLocationByPlatform()
czy wszystko AWT, nie Swing. ;)Odpowiedzi:
Z tego linku
źródło
pack()
i umieścił lewy górny róg ramki na środku mojego ekranu. Po przesunięciu linii poniżejpack()
została prawidłowo wyśrodkowana.Powinno to działać we wszystkich wersjach Java
źródło
setLocationRelativeTo(null)
powinno zostać wywołane po użyciusetSize(x,y)
lub użyciupack()
.źródło
Zauważ, że obie techniki setLocationRelativeTo (null) i Tookit.getDefaultToolkit (). GetScreenSize () działają tylko na głównym monitorze. Jeśli pracujesz w środowisku z wieloma monitorami, może być konieczne uzyskanie informacji o konkretnym monitorze, na którym znajduje się okno, przed wykonaniem tego rodzaju obliczeń.
Czasami ważne, czasami nie ...
Zobacz javadocs GraphicsEnvironment, aby uzyskać więcej informacji o tym, jak to uzyskać.
źródło
W systemie Linux kod
Umieszczaj moje okno w losowej lokalizacji za każdym razem, gdy je uruchamiam, w środowisku z wieloma wyświetlaczami. I kod
„przeciąć” okno na pół, umieszczając je dokładnie na środku, czyli między moimi dwoma wyświetlaczami. Użyłem następującej metody, aby go wyśrodkować:
Powoduje, że okno pojawia się na środku pierwszego ekranu. To chyba nie jest najłatwiejsze rozwiązanie.
Działa poprawnie w systemach Linux, Windows i Mac.
źródło
W końcu dostałem ten zestaw kodów do pracy w NetBeans przy użyciu Swing GUI Forms w celu wyśrodkowania głównego jFrame:
LUB
LUB
źródło
Poniższe elementy nie działają w przypadku JDK 1.7.0.07:
Umieszcza lewy górny róg na środku - nie to samo, co wyśrodkowanie okna. Drugi też nie działa, obejmujący frame.getSize () i Dimensions.getSize ():
Metoda getSize () jest dziedziczona z klasy Component, w związku z czym frame.getSize zwraca również rozmiar okna. W ten sposób odejmując połowę wymiarów pionowych i poziomych od wymiarów pionowych i poziomych, aby znaleźć współrzędne x, y miejsca, w którym należy umieścić lewy górny narożnik, podaje położenie punktu środkowego, który kończy się również wyśrodkowaniem okna. Jednak pierwsza linia powyższego kodu jest przydatna, „Wymiar ...”. Po prostu zrób to, aby go wyśrodkować:
JLabel ustawia rozmiar ekranu. Znajduje się w FrameDemo.java dostępnym w samouczkach java w witrynie Oracle / Sun. Ustawiłem go na połowę wysokości / szerokości rozmiaru ekranu. Następnie wyśrodkowałem go, umieszczając lewy górny róg na 1/4 wymiaru ekranu od lewej i 1/4 wymiaru ekranu od góry. Możesz użyć podobnej koncepcji.
źródło
poniżej znajduje się kod do wyświetlania ramki w górnej środkowej części istniejącego okna.
}
} public static void main (String [] args) rzuca wyjątek {
}
Poniżej znajduje się wynik powyższego fragmentu kodu:
źródło
frame.setLocation(x, 0);
wydaje się źle - czy nie powinno byćframe.setLocation(x, y);
zamiast tego?int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
istnieje w kodzie tylko po to, aby pokazać, że można również wyśrodkować na osi pionowej? Ok, myślałem, że zapomniałeś go użyć, przepraszam za kłopoty.Jest coś naprawdę prostego, co możesz przeoczyć po próbie wyśrodkowania okna za pomocą jednego
setLocationRelativeTo(null)
lub drugiego,setLocation(x,y)
a kończy się to trochę poza środkiem.Upewnij się, że po wywołaniu używasz jednej z tych metod,
pack()
ponieważ w końcu użyjesz wymiarów samego okna, aby obliczyć, gdzie umieścić je na ekranie. Dopóki niepack()
zostanie wywołane, wymiary nie są tym, co myślisz, odrzucając obliczenia w celu wyśrodkowania okna. Mam nadzieję że to pomoże.źródło
Przykład: Wewnątrz myWindow () w linii 3 znajduje się kod potrzebny do ustawienia okna na środku ekranu.
źródło
frame.setLocationRelativeTo (null);
Pełny przykład:
źródło
Poniższy kod wyśrodkowuje
Window
w środku bieżącego monitora (tj. Tam, gdzie znajduje się wskaźnik myszy).źródło
Ty też możesz spróbować.
źródło
Właściwie ramka
.getHeight()
igetwidth()
nie zwraca wartości, sprawdź to,System.out.println(frame.getHeight());
bezpośrednio wstawiając wartości szerokości i wysokości, wtedy będzie działać dobrze na środku. np. jak poniżejoba 450 to szerokość mojej ramy n wysokość
źródło
źródło
Kolejność połączeń jest ważna:
pierwszy -
drugi -
źródło