2012-08-17 16 views
9

Jak mogę uzyskać rzeczywisty rozmiar JPanel w JFrame?Jak uzyskać prawdziwy rozmiar JPanel?

+6

"Poprzez wywoływanie [' getSize() '] (http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#getSize%28%29)." Możliwe, że metoda jest wywoływana przed momentem, w którym zostanie zrealizowana. Aby uzyskać bardziej szczegółowe porady, opublikuj [SSCCE] (http://sscce.org/). –

+1

Jak mówi @Andrew. Ale nie możesz tego zrobić, dopóki nie zostanie wyrenderowany. – km1

Odpowiedz

16

rozmiar będzie 0,0 dopóki nie zostanie wyświetlona, ​​ponieważ składniki i układ nie są obliczane wcześniej.

+0

Czy jest wywołanie inicjowania komponentów potomnych jPanel po uzyskaniu rzeczywistej szerokości i wysokości? –

8

thePanel.getSize();

ta zwraca wymiar.

Czasami dodam element ComponentListener, aby wyświetlić wymiar po zmianie rozmiaru panelu.

EDIT: Jeśli chcesz rozmiaru okienka zawartości w JFrame następnie

theFrame.getContentPane().getSize(); 
+1

Nie daje rzeczywistego rozmiaru java.awt.Dimension [width = 0, height = 0] Użyłem tego przed – Yoda

+0

@RobertKilar km połowa odpowiedział na twoje pytanie, dodaj ComponentLsterner do panelu, który cię interesuje i monitoruj zdarzenia componentResized – MadProgrammer

+1

@RobertKilar prawdopodobnie otrzymujesz rozmiar przed renderowaniem. Wypróbuj moduł obsługi zdarzenia zmiany rozmiaru komponentu słuchającego. – km1