2010-03-31 40 views
5

Có cách nào để sử dụng nhiều hơn 1 trình quản lý bố cục trong Java. Ngay bây giờ tôi đang sử dụng một GridLayout để thực hiện một bàn cờ nhưng bên dưới nó tôi muốn đặt một số công cụ khác nhưng không phải trong một GridLayout. Có lẽ một FlowLayout hoặc một số bố trí khác. Tôi sẽ đi đâu để tới đó? Cảm ơn!Nhiều Trình quản lý bố cục trong Java

Trả lời

6

Có cách nào để sử dụng nhiều hơn 1 bố cục trình quản lý trong Java.

Tuyệt đối. Trong thực tế, việc sử dụng nhiều trình quản lý bố cục là tiêu chuẩn.

Tôi làm cách nào để thực hiện việc này?

Bất kỳ Container lớp con nào có thể có LayoutManager và chứa các phần tử con. Và mỗi phần tử con này có thể là Container với trẻ em. Thùng chứa phổ biến nhất được sử dụng bên dưới các khung hình cấp cao nhất là JPanel.

Ví dụ, bạn có thể sử dụng BorderLayout cho khung, đặt JPanel với lưới ở vị trí TRUNG TÂM (vì đó là một không gian còn lại có sẵn khi các vị trí khác đã được cung cấp kích thước ưa thích) và một số khác là JPanel với "nội dung khác" ở vị trí SOUTH.

Chi tiết khác có thể tìm thấy trong số Swing tutorial on layout managers.

7

Vâng, tất cả bạn cần là lên kế hoạch của bạn trên tất cả các giao diện người dùng Giao diện (ví dụ; Window, bảng điều khiển tổng thể vv)

Ví dụ, bạn cần phải đặt một cái gì đó dưới bàn cờ của bạn, tôi thường đi với một BorderLayout tại mức cơ bản.

Vì vậy, giả sử tôi có một JPanel được gọi là masterPanel, chứa tất cả các thành phần cho ứng dụng cờ vua của tôi. Vì vậy, mã sẽ trông giống như:

JPanel masterPanel = new JPanel(new BorderLayout()); 
JPanel chessBoardPanel = createChessboardPanel(); //assuming this method will return a 
//JPanel with chess board using GridLayout 
JPanel infoPanel = new JPanel(); //this is the panel that would contain info elements, that //may go below my chess board. 
//Now add everything to master panel. 
masterPanel.add(chessBoardPanel, BorderLayout.CENTER); 
masterPanel.add(infoPanel, BorderLayout.PAGE_END); 
//add masterPanel to your window (if required) 
this.getContentPane().add(masterPanel); 
Các vấn đề liên quan