2013-10-31 5 views
0

JPanel에서 사용할 레이아웃을 결정하는 데 문제가 있습니다. 내가 JPanel을 그리기 위해 시도한 것처럼 보일 필요가있다.어떻게 FlowLayout 또는 GridLayout에 수동으로 구성 요소를 배치 할 수 있습니까?

|-----------------------| 
|  Some JLabel  | 
|      | 
| JLabel |JTextField| | 
| JLabel |JTextField| | 
| JLabel |JTextField| | 
|-----------------------| 

FlowLayout을 사용하려고 생각했지만 수동으로 구성 요소를 설정하여 다음 행에 배치하는 방법을 알 수 없습니다. 나는 GridLayout을 시도했지만 약간의 성공을 거두었지만 찾고있는 것은 아니었다. 지금까지 가지고있는 JPanel의 코드는 다음과 같습니다.

JPanel mainPanel = new JPanel(); 
mainPanel.setLayout(new GridLayout(4, 1)); 
JLabel description = new JLabel("description.."); 

JLabel label1 = new JLabel("label1"); 
JLabel label2 = new JLabel("label2"); 
JLabel label3 = new JLabel("label3");  

JTextField field1 = new JTextField(25); 
JTextField field2 = new JTextField(25); 
JTextField field3 = new JTextField(25); 

mainPanel.add(description); 
mainPanel.add(label1); 
mainPanel.add(field1); 
mainPanel.add(label2); 
mainPanel.add(field2); 
mainPanel.add(label3); 
mainPanel.add(field3); 

고마워요!

답변

2

는이 작업을 달성하기 위해 GridBagLayout를 사용할 수 있지만 NORTH 위치에 제목을 배치하고 그것의 필드와 다른 패널을 두는 CENTER 위치에 GridLayout를 사용하여, 단순한를 사용하여 A BorderLayout에 eaiser 수 있습니다.

물론 최종 결과는 원하는대로 나타날 것입니다.

좀 더 아이디어를 A Visual Guide to Layout Managers에서 살펴보고 복합 레이아웃

+0

고마워요! 나는 NORTH 영역을위한 패널과 메인 패널의 CENTER 영역을위한 그리드 아웃 패널을 사용했다. 나는 약간 조정해야 할 것이다. 그러나 나는 정말로 당신의 제안에 감사한다! –

3

당신은 단지 하나의 레이아웃 매니저를 사용하도록 강요되지 않습니다를 사용하는 것을 두려워하지 않습니다. 각각의 레이아웃 관리자가있는 여러 개의 패널을 사용할 수 있습니다.

그러나이 경우 GridBagLayout이 가장 쉽습니다. 먼저 작업 예제와 모든 제약 조건에 대한 설명을 보려면 How to use GridbagLayout에있는 스윙 튜토리얼의 섹션을 읽어보십시오.

+0

100k에 대한 축하 - 가장 강력하고 쉬운 것 중 가장 쉬운 것 중 가장 쉬운 것 중 하나 인'GridBagLayout'을 부르겠습니까? – MadProgrammer

+0

감사합니다. 변경되지 않았다는 것을 알지 못했습니다 :) 동의 함, GridBagLayout은 일반적으로 쉬운. GridLayout을 사용하여 BorderLayout을 제안하려고했지만 크기를 조정할 수 있습니다. 레이블/텍스트 필드 쌍을 위해 JDK에서 레이아웃을 사용하기가 더 쉬웠 으면 좋겠습니다. – camickr

+0

'GridLayout'과'GridBagLayout'의 하이브리드 -'GridLayout'의 채우기 옵션이'GridBagLayout'의 용이성 : P – MadProgrammer