2012-01-23 8 views
1

안녕하세요 저는 자바 프로그래밍 기술을 익히기 위해 체스 게임을 만드는 자바 스윙을 배우고 있습니다.자바 스윙 패널 크기

동쪽에 JPanel을 추가했습니다. BorderLayout으로 JFrame의 동쪽에 setPrefferedSize(new Dimension(x,y)) 메서드를 사용하여 너비와 높이를 설정했습니다.

그 후 나는 JPanel을 4 개 만들고 이전에 만든 패널에 BoxLayout으로 추가했습니다.

setSize(x,y)setPreferredSize(new Dimension(x,y))으로 4 패널의 크기를 설정하려했지만 4 개의 패널이 자동으로 변경되어 주 JPanel에 맞게 크기가 변경되었고 그 중 하나에 JLabel을 추가 한 후에 크기가 커졌습니다 자동으로.

이 내 코드입니다 :

가 어떻게 이러한 패널의 각의 크기를 변경할 수 있습니다

this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 
JPanel a = new JPanel(); 
a.setPreferredSize(new Dimension(50, 50)); //this dosent work 
a.add(min); 
a.setBackground(Color.red); 
this.add; 

JPanel b = new JPanel(); 
b.setBackground(Color.blue); 
this.add(b); 

JPanel c = new JPanel(); 

this.add(c); 

JPanel d = new JPanel(); 
d.setBackground(Color.black); 
this.add(d); 
?

+0

처리중인 이러한 문제는 레이아웃에 따라 다릅니다. Use는 'BoxLayout'을 사용해야합니까? 나를 위해, 개인적으로, 당신은 달성하고자하는 작업에'GridLayout'을 사용할 것입니다. – fireshadow52

+2

참고 사항 [예제] (http://stackoverflow.com/a/2562685/230513) 및 [변형] (http://stackoverflow.com/a/2563350/230513); more [here] (http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-methods-in-java-swi/7229662). – trashgod

+0

그것들은 실제로'BoxLayout' 문제입니다. 'Grid' 레이아웃을 사용해보십시오. 그러면 여러분이 기대하는 것보다 훨씬 더 많을 것입니다. – Sheriff

답변

3

BoxLayout은 단일 축을 따라 다양한 크기의을 갖는 구성 요소 을 배치하는 데 가장 좋습니다. Javadocs에서 :

"BoxLayout은 구성 요소를 원하는 너비 (가로 레이아웃의 경우) 또는 높이 (세로 레이아웃의 경우)로 정렬하려고 시도합니다."

아이디어는 가로 레이아웃의 경우 높이가 다를 수 있으며 최대 높이를 차지합니다. 그리고, 그들은 확실히 다른 너비를 가질 수 있습니다. 또한 BoxLayout은 Box.createHorizontalGlue().과 같은 재미있는 필러 조각과 함께 작동합니다. 실제로 이러한 글꼴을 사용하면 유연하고 크기를 조정할 수있는 레이아웃에 매우 유용합니다. 그러나 BoxLayout은 크기가 다른 항목을 유연하고 크기를 조정할 수있는 레이아웃을 제공합니다.

더 간단한 경우, 특히 모두 선호하는 너비와 선호하는 높이를 "존중받는"것으로 원하면 다른 사람들이 제안한대로 GridLayout을 사용하십시오.