2010-03-11 29 views
7

Tôi muốn thêm một JSeparator dọc giữa hai thành phần sử dụng GridBagLayout. Mã tôi có như sau:JSeparator sẽ không hiển thị với GridBagLayout

public MainWindowBody(){ 
    setLayout(new GridBagLayout()); 

    JPanel leftPanel = new InformationPanel(); 
    JPanel rightPanel = new GameSelectionPanel(); 

    JSeparator sep = new JSeparator(JSeparator.VERTICAL); 
    GridBagConstraints gbc = new GridBagConstraints(); 

    gbc.gridx = 0; 
    gbc.gridy = 0; 
    gbc.anchor = GridBagConstraints.NORTH; 

    add(leftPanel,gbc); 

    gbc.gridx = 1; 
    gbc.gridy = 0; 
    gbc.fill = GridBagConstraints.VERTICAL; 

    add(sep,gbc); 

    gbc.gridx = 2; 
    gbc.gridy = 0; 
    gbc.fill = GridBagConstraints.NONE; 

    add(rightPanel,gbc); 
} 

Nhưng JSeperator không hiển thị, bất kỳ ý tưởng nào?

Cảm ơn

+1

Các JSeperator không thực sự "hiển thị", có một dòng mỏng giữa các thành phần sẽ biến mất nếu bạn nhận xét thêm (sep, gbc) – Thomas

Trả lời

11

Bạn có thể cố gắng thiết lập chiều rộng thuận lợi nhất để tách:

sep.setPreferredSize(new Dimension(5,1)); 

Sau đó, hãy GridBagLayout sử dụng hết chiều cao có sẵn cho các separator:

gbc.fill = GridBagConstraints.VERTICAL; 
gbc.weighty = 1; 
4

Taken từ hướng dẫncủa Sun cho JSeparator:

Trong hầu hết các trường, một dọc tách có chiều cao ưa thích của 0, và thiết bị tách ngang có rộng ưa thích của 0. Điều này có nghĩa là dấu phân cách không hiển thị trừ khi bạn đặt kích thước ưa thích hoặc đặt nó ở dưới sự kiểm soát của bố cụcNgười quản lýnhư BorderLayout hoặc BoxLayout trải dài để lấp đầy khu vực hiển thị có sẵn của nó.

Các dấu phân cách dọc không có một chút chiều rộng (và ngang một chút chiều cao), do đó bạn sẽ thấy một số không gian nơi tách được. Tuy nhiên, đường phân chia thực tế không được vẽ trừ khi chiều rộng và chiều cao là cả hai khác không.

Có thể bạn nên đặt các ràng buộc đúng?

+0

là có cách nào theo bố trí túi lưới tôi có thể làm cho nó kéo dài đến chiều cao của cửa sổ? – Aly

+1

@Aly, đặt gbc.weighty = 1; – Thomas

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