2011-08-22 36 views
7

Tôi đã tạo một JFrame và cố gắng để có được kích thước của nó là đưa ra một kết quả không chính xác, so với những gì tôi mong đợi.JFrame: Nhận kích thước nội dung thực tế

Tôi đã xác định rằng nó bao gồm đường viền hệ điều hành xung quanh các cạnh và thanh tiêu đề.

Làm cách nào tôi có thể nhận/đặt kích thước thực mà tôi có sẵn để hiển thị?

+1

Bạn có chắc chắn đó là 'JPanel' chứ không phải 'JFrame'? Nếu nó là thứ hai, sử dụng 'frame.getContentPane(). GetSize()'. Bạn cũng có thể tìm thấy [câu hỏi này] (http://stackoverflow.com/questions/2796775/setting-the-size-of-a-contentpane-inside-of-a-jframe) hữu ích ... –

+0

Ồ, xin lỗi, vâng đó là một JFrame. Tôi không thể tin rằng tôi đã trộn lẫn chúng. Xin lỗi, tôi đã cố định câu hỏi. –

+0

* "có thể là vì tôi đang nói sai điều này" * Có vẻ như toàn bộ cách tiếp cận của bạn là sai. Nó là phổ biến hơn cho một thành phần tùy chỉnh kết xuất để hỏi 'làm thế nào lớn tôi?'. Đối với bất cứ điều gì khác, các bố trí nên xử lý kích thước tự động, không có ứng dụng. bao giờ yêu cầu kích thước hoặc kích thước. –

Trả lời

5

Kích thước bạn nhận được là kích thước của nội dung kích thước của insets. Nếu bạn sử dụng Jcomponent.getInsets(), bạn có thể tìm thấy kích thước của nội dung với phép trừ đơn giản.

+0

Cảm ơn, hiện đang hoạt động :) –

2

Câu hỏi của bạn khó hiểu: JPanels không có thanh tiêu đề hoặc viền cửa sổ, chúng là các vùng chứa trừu tượng là INSIDE JFrames. JFrames là các đối tượng có các thanh tiêu đề và các đường viền cửa sổ.

JPanel.getSize() sẽ hoạt động như dự định. Tuy nhiên, đối với JFrames bạn sẽ muốn sử dụng JFrame.getContentPane().getSize(), vì getContentPane() trả lại JPanel (đó là khu vực nội dung thực tế).

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