2012-08-17 47 views
9

Làm cách nào để nhận được kích thước JPanel thực trong JFrame?Làm thế nào để có được kích thước thực JPanel?

+6

"Bằng cách thực sự gọi [' getSize() '] (http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#getSize%28%29)." Có thể là phương pháp này đang được gọi trước khi nó được nhận ra. Để được tư vấn cụ thể hơn, hãy đăng một [SSCCE] (http://sscce.org/). –

+1

Như @Andrew nói. Nhưng bạn không thể làm điều đó cho đến khi nó được trả lại. – km1

Trả lời

16

Kích thước sẽ 0,0 cho đến khi nó được hiển thị bởi vì các thành phần và bố trí không được tính trước.

+0

Có bất kỳ cuộc gọi lại để khởi tạo các thành phần con của jPanel sau khi nó có chiều rộng và chiều cao thực của nó không? –

8

thePanel.getSize();

Trả về thứ nguyên.

Đôi khi tôi thêm một ComponentListener để hiển thị thứ nguyên khi bảng điều khiển được thay đổi kích thước.

EDIT: Nếu bạn muốn kích thước của khung nội dung của JFrame sau đó

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

Nó không cho kích thước thực java.awt.Dimension [width = 0, height = 0] Tôi đã sử dụng nó trước khi – Yoda

+0

@RobertKilar km trả lời một nửa câu hỏi của bạn, thêm ComponentLsterner vào bảng điều khiển mà bạn quan tâm và theo dõi sự kiện thành phầnĐược xác định – MadProgrammer

+1

@RobertKilar có thể bạn đang nhận được kích thước trước khi kết xuất. Hãy thử xử lý sự kiện thay đổi kích thước của trình nghe thành phần. – km1

Các vấn đề liên quan