2012-08-29 3 views
1

GridBagLayout에서 셀 크기 (높이/너비)를 제한 할 수 있습니까?GridBagLayout 최대 셀 크기

내 말은 .. 나는 동일한 가중치 = 0.5를 갖는 2 개의 행을 가지고 있지만, 크기를 조정할 때 첫 번째 행이 300 픽셀 이상이되는 것을 원하지 않습니다.

또한 300보다 작 으면 사용 가능한 공간이 필요하지 않습니다. (가중치를 0으로 설정). 셀에서 구성 요소의 최대 크기를 설정하는 것은 의미가 없습니다. 왜냐하면 크기를 조정할 때 사용 가능한 모든 공간이 구성 요소로 채워지기 때문입니다 (구성 요소의 크기가 셀을 채우기 위해 조정 됨).

+0

GBL은 아니지만 [MiGLayout] (http://www.miglayout.com)이 그렇게 할 것입니다. –

답변

2

내 지식으로는 GridBagLayout을 사용할 수 없습니다. 다행히 대안이 있습니다. MiGLayoutGridBagLayout과 유사하지만 더 강력하고 표현력이 뛰어납니다. 또한 셀 기반이기 때문에 셀의 셀, 행 및 열의 최소, 기본 및 최대 크기를 설정할 수 있습니다.

이 방법은 내 자신의 행 제한에 너무 많이 의존하기 때문에 스스로 해결하는 것이 좋습니다. 좋아하는 것, 그리고 당신이 원하는 것에 대한 몇 가지 가정에 기초를두고 있습니다. 예를 들어 여기에 있습니다 :

JPanel panel = new JPanel(new MigLayout("flowy, fillx, filly", "[fill, grow]", "[fill, 0:100:300][fill, 0:100:max(100%,300)]")); 
JPanel redPanel = new JPanel(); 
redPanel.setBackground(Color.RED); 
JPanel bluePanel = new JPanel(); 
bluePanel.setBackground(Color.BLUE); 

panel.add(redPanel); 
panel.add(bluePanel); 

JFrame frame = new JFrame(); 
frame.add(panel); 
frame.pack(); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setVisible(true);