2012-01-09 2 views
4

웹 페이지를 만들 때 DIV 태그처럼 위에서 아래로 컨테이너와 같은 JPanels를 사용하고 싶습니까? BorderLayout을 사용하면 북 (NORTH) 및 남쪽 (SOUTH) 중 두 개만 가질 수 있습니까?자바 및 레이아웃

각 JPanels에 다른 JButtons, JLabelsJTextFields을 배치하고 싶습니다. 이것은 내가 할 노력하고있어 레이아웃입니다 :

container1을 그리고

컨테이너 2 내용 그리고 그것은

Container3 내용 그리고 그것은 도움을

감사 내용입니다.

편집 : 내 코드 beacuse의 일부를 추가했는데 제대로하고 있는지 잘 모르겠습니까? 당신이 1
에 열 수를 설정할 때

JPanel container1, container2, container3; 
container1 = new JPanel(); 
container2 = new JPanel(); 
container3 = new JPanel(); 

container1.setLayout(new BoxLayout(container1, BoxLayout.Y_AXIS)); 
container2.setLayout(new BoxLayout(container2, BoxLayout.Y_AXIS)); 
container3.setLayout(new BoxLayout(container3, BoxLayout.Y_AXIS)); 

// lägg till komponenter till containers 
container1.add(button1); 
container2.add(button2); 
container3.add(button3); 

// lägg till containers till fönster 
frame.add(container1); 
frame.add(container2); 
frame.add(container3); 

답변

2

당신은 당신이 PAGE_LAYOUT 또는 Y_AXIS 방향을 사용할 때이 효과를 제공해야하는, 또한 BoxLayout있다,이에 대한 GridLayout를 사용할 수 있습니다. 레이아웃을 직접하지 않는 프레임, 프레임의 내용 창에서 설정되어 있는지

Container container = frame.getContentPane(); 
frame.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS)); 

JPanel panel1 = new JPanel(); 
panel1.add(new JButton("Button #1")); 
frame.add(panel1); 

JPanel panel2 = new JPanel(); 
panel2.add(new JLabel("Label #1")); 
frame.add(panel2); 

참고 : 여기에

는 BoxLayout에서는 일부 샘플 코드입니다. JFrame에 직접 BoxLayout을 설정하려고하면 "BoxLayout을 공유 할 수 없습니다."오류가 발생합니다.

+0

BoxLayout은 재미 있겠지만 JPanels가 모든 공간을 차지합니까? 배경색을 사용하면 상자의 각 칸을 덮을까요? –

+0

@ 3D-kreativ, 예. – mre

+0

코드를 시험해보고 문제가 있습니다! 나는 이것을 처음에는 사용하지 말아야한다 : frame.setLayout (new BorderLayout()); 그리고 상자를 다음과 같이 배치해야합니다 : container1.setLayout (new BoxLayout (container1, BoxLayout.Y_AXIS)); \t container2.setLayout (새 BoxLayout (컨테이너 2, BoxLayout.Y_AXIS)); 나는 공간을 많이 차지합니다. 상단에 하나의 버튼과 하단에 또 하나의 버튼!? 박스 나 패널의 크기를 설정할 수 있습니까? Container1 및 container2는 JPanel –

4

레이아웃 관리자 BoxLayout을 원합니다. 이 특정 레이아웃 관리자는 수직으로 쌓는 구성 요소를 아주 쉽게 만듭니다.

+0

JPanels를 쌓으려면이 기능이 실제로 작동합니까? –

+1

@ 3D-kreativ 그것은 모든 스윙 구성 요소에서 작동합니다. – mre

1

웹 페이지의 요소는 거의 FlowLayout의 기능을 수행합니다. 충분한 공간이 없으면 모든 것을 행 (가로 또는 세로)로 표시하고 여러 행으로 넘치십시오. 어레인지를 수정하려면 BoxLayout을 사용하십시오.

그러나 레이아웃 관리자를 중첩하면 사소한 일이 발생할 수 있습니다. 다음은 article that explains it well입니다.