2010-03-11 2 views
7

GridBagLayout을 사용하여 두 구성 요소 사이에 수직 JSeparator를 추가하고 싶습니다. 어떤 아이디어를JSeparator가 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); 
} 

을하지만 JSeperator가 표시되지 않습니다 다음과 같이 내가 가진 코드는? JSeparator위한 안내에서 카메라

감사

+1

을 JSeperator는 "쇼"실제로 않습니다, 추가 (sep, gbc) – Thomas

답변

11

당신은 분리에 대한 적절한 폭을 설정을 시도 할 수 있습니다 :

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

을 그리고, GridBagLayout와는 분리 가능한 모든 높이를 사용합니다

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

대부분의 구현에서

수직 세퍼레이터 0 의 바람직한 높이가 수평 세퍼레이터의 바람직한 폭 0입니다. 즉, 의 기본 크기를 설정하거나 을 배치 레이아웃의 제어하에 두지 않는 한 구분 기호는 표시되지 않습니다. BorderLayout 또는 BoxLayout과 같은관리자가 사용 가능한 표시 영역 인 을 채 웁니다.

수직 세퍼레이터 비트 폭을 (수평 높이의 비트)을 가지고 있으므로, 세퍼레이터이고 일부 공백 를 참조한다. 그러나 너비와 높이가 둘 다 이 아닌 한 실제 분할 선은 으로 그려지지 않습니다.

아마도 올바른 제약 조건을 설정해야합니까?

+0

을 주석으로 처리하면 구성 요소 사이에 얇은 선이 생겨서 그리드 백 레이아웃 아래에 윈도우의 높이를 늘릴 수 있습니까? – Aly

+1

@Aly, set gbc.weighty = 1; – Thomas

관련 문제