2011-08-29 5 views
3

GridBagLayout이 있습니다. weightx W weighty 값에는 0이 아닌 다른 값이 지정되고 GridBagConstraints.fill = GridBagConstraints.BOTH가 지정됩니다. JPanel을 셀 중 하나에 중첩시키고 GridBagLayout도 제공했습니다. 중첩 된 JPanel에 구성 요소를 추가하면 중첩 된 JPanel이있는 셀 크기가 부모의 레이아웃을 놓치는 모든면에서 커집니다. 삽입 및 패딩은 사용되지 않습니다.
어떻게이 문제를 해결할 수 있습니까?
enter image description hereGridBagLayout이있는 중첩 JPanel

이 중첩 JPanel의 구성 요소를 추가 한 후 스크린 :
enter image description here이 중첩 JPanel의 구성 요소를 추가하기 전에 스크린이

GridBagConstraints treePanCon = new GridBagConstraints(); 
treePan.setLayout(treePanGridbag); 
treePanCon.fill = GridBagConstraints.BOTH; 
treePanCon.weightx = 0.5; 
treePanCon.weighty = 1; 
treePanCon.gridx = 0; 
treePanCon.gridy = 0; 
treePanCon.gridwidth = 1; 
treePanCon.gridheight = 1; 

: 이것은 GridBagConstraints의 값의 예

+0

코드를 포함 할 수 있습니까? 당신은 당신이 원하는 것을 설명 할 수 있습니까? – eon

답변

4

그게 정확히 일어난 일입니다. 찾고있는 행동을 설명해주십시오. 제쳐두고 J2SE에서 사용 가능한 레이아웃 관리자는 이상적이지 않습니다. 과거의 삶에서 많은 양의 스윙 작업을 했더라면 JGoodies 양식을 체크 아웃하는 것이 좋습니다 : http://www.jgoodies.com/freeware/forms/. 백서를 확인하십시오. 사용하기 쉽고 GridBag보다 훨씬 직관적입니다.

+0

@ Ken Blair : 중첩 된 JPanel의 구성 요소를 추가하기 전에 부모의 레이아웃을 정의 된대로 유지하겠습니다. 감사 – FadelMS

2

이이 늦게 일에 당신에게 아마의 전혀 사용하지 않습니다,하지만 당신은 아마 예전처럼 ...

그것은 보이는 BOTH 두 개의 새로운 버튼을 배치 할 때.

트리에 preferredSize.width 당신이 내부 패널에 대해 원하는 폭이 경우

,
하고 나무의 절반 폭을 각각 두 개의 새로운 버튼을 원

는 preferredSize.width 설정 tree의 preferredSize.width의 절반 인
으로 설정하고 두 개의 버튼에서 NONE을 사용합니다.

내부 패널의 트리에서 수직을 사용하십시오. 외부 패널의 내부 패널에서 VERTICAL을 사용하십시오.