2014-09-14 6 views
0

Groovy에서 SwingBuilder를 사용하여 GridBagLayout을 실행하는 데 문제가 있습니다. GridBagLayout과 Groovy가 아니라고 생각합니다. 그래서 자바에서 똑같이 작동한다고 가정합니다. 나는 윈도우의 정확히 50 %를 복용 왼쪽에있는 텍스트 창으로 창을하고 싶은텍스트 필드에 텍스트를 입력 할 때 GridBagLayout의 크기가 계속 유지됩니다.

new SwingBuilder().edt { 
    frame(title: 'test', defaultCloseOperation: JFrame.EXIT_ON_CLOSE, pack: true, show: true) { 
    gridBagLayout() 
    widget(textPane(background: java.awt.Color.RED), constraints: gbc(gridx:0, gridy: 0, weightx: 0.5, weighty: 1, fill: GBC.BOTH, gridheight: GBC.REMAINDER)) 
    widget(textPane(background: java.awt.Color.GREEN), constraints: gbc(gridx: 1, gridy: 0, weightx: 0.5, weighty: 1, fill: GBC.BOTH)) 
    label(text: "test label", background: java.awt.Color.BLUE, opaque: true, constraints: gbc(gridx: 1, gridy: 1, weightx: 0.5, fill: GBC.BOTH)) 
    } 
} 

:

나는 다음과 같은 간단한 레이아웃을 가지고있다. 창 (다른 50 %)의 오른쪽에는 다른 텍스트 창과 그 아래 (그러나 필요한 최소 크기 만 사용) 레이블이 있습니다.

위의 코드가 작동하고 왼쪽면 텍스트 창에 입력하기 시작하면 이지만을 만들면 왼쪽면이 50 % 이상의 공간을 차지하기 시작합니다.

위의 레이아웃을 어떻게 달성 할 수 있습니까? 텍스트 창에 입력되는 텍스트가 무엇이든 관계없이 양면 인쇄는 항상 50:50이됩니까?

답변

3

왼쪽 창에 정확히 50 %의 텍스트 창이있는 창을 갖고 싶습니다.

그런 다음이 두 구성 요소에 대해 GridLayout이있는 패널을 사용해야합니다.

다른 텍스트 창과 그 아래에는 (필요한 최소 크기 만 사용하여) 레이블이 오른쪽에 있습니다 (다른 50 %).

그런 다음 "CENTRE"에 텍스트 창이 추가되고 "PAGE_END"에 레이블이 추가 된 BorderLayout을 클릭합니다.