문제

Gridbaglayout을 사용하여 두 구성 요소 사이에 수직 jseparator를 추가하고 싶습니다. 내가 가진 코드는 다음과 같습니다.

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는 어떤 아이디어도 보여주지 않습니까?

감사

도움이 되었습니까?

해결책

분리기의 선호 너비를 설정하려고 시도 할 수 있습니다.

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

그런 다음 Gridbaglayout을 분리기에 사용 가능한 모든 높이로 사용하도록하십시오.

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

다른 팁

가져 왔습니다 태양 가이드 JSeparator:

대부분의 구현에서 수직 분리기의 높이가 0이고 수평 분리기의 폭이 0입니다. 이는 선호하는 크기를 설정하거나 레이아웃 관리자의 제어하에 놓지 않으면 분리기가 보이지 않음을 의미합니다. 사용 가능한 디스플레이 영역을 채우기 위해 스트레칭하는 BorderLayout 또는 Boxlayout과 같은.

수직 분리기는 약간의 너비 (그리고 수평이 약간 높이)를 가지고 있으므로 분리기가있는 공간이 보일 것입니다. 그러나 너비와 높이가 0이 아닌 경우 실제 분할 선은 그려지지 않습니다.

올바른 제약 조건을 설정해야할까요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top