2012-08-29 3 views
1

Windows 7 (64 비트)의 Java 7에서 GroupLayout을 사용하여 프레임을 구성하고 있습니다. 다음은 GroupLayout에 Oracle 예제를 사용한 레이아웃 구조입니다.자바 GroupLayout 디자인 및 정렬 도움 확인

원하는 레이아웃 : 코드

+------------------------------------------+ 

| [Label1] [ComboBox1]     | 

| [Label2] [TextField1] [Button1]   | 

| [Label3] [TextField2] [Button2]   | 

| [Label4] [ComboBox2]     | 

+------------------------------------------+ 

내 디자인 :

layout.setHorizontalGroup(layout.createSequentialGroup() 

    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)) 
     .addComponent(Label1) 
     .addComponent(Label2) 
     .addComponent(Label3) 
     .addComponent(Label4) 
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)) 
     .addComponent(ComboBox1) 
     .addComponent(TextField1) 
     .addComponent(TextField2) 
     .addComponent(ComboBox2)     
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)) 
     .addComponent(Button1) 
     .addComponent(Button2) 

); 

layout.linkSize(SwingConstants.HORIZONTAL, Button1, Button2); 

layout.setVerticalGroup(layout.createSequentialGroup() 

    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)) 
      .addComponent(Label1) 
      .addComponent(ComboBox1) 
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)) 
      .addComponent(Label2) 
      .addComponent(TextField1) 
      .addComponent(Button1) 
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)) 
      .addComponent(Label3) 
      .addComponent(TextField2) 
      .addComponent(Button2) 
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)) 
      .addComponent(Label4) 
      .addComponent(ComboBox2) 
); 

나는이 경험있는 사람에 의해 확인하는 데 필요한. 현재이 코드는 크기 ComboBox1, ComboBox2TextField2의 정렬 문제를 크게 줄입니다.

이 문제를 해결하기위한 제안은 무엇입니까?

+1

1) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. 2) 코드, ASCII 아트, 입출력 및 HTML 또는 XML과 같은 구조화 된 문서에 코드 형식을 사용하십시오. 이를 수행하려면 샘플을 선택하고 메시지 게시/편집 양식 위에있는 '{}'버튼을 클릭하십시오. –

답변

2

첫째, 개인적으로는 GroupLayout을 피할 것입니다.이 코드는 직접 코딩하지 않아도됩니다.

내가 레이아웃의 그 유형에 대한 GridBagLayout에 대신

setLayout(new GridBagLayout()); 
GridBagConstraints gbc = new GridBagConstraints(); 
gbc.gridx = 0; 
gbc.gridy = 0; 
add(label1, gbc); 
gbc.gridx++; 
add(comboBox1, gbc); 

gbc.gridx = 0; 
gbc.gridy++; 
add(label2, gbc); 
gbc.gridx++; 
add(textField1, gbc); 
gbc.gridx++; 
add(button1, gbc); 

gbc.gridx = 0; 
gbc.gridy++; 
add(label3, gbc); 
gbc.gridx++; 
add(textField2, gbc); 
gbc.gridx++; 
add(button2, gbc); 

gbc.gridx = 0; 
gbc.gridy++; 
add(label4, gbc); 
gbc.gridx++; 
add(comboBox2, gbc); 
2

를 사용하는 거라고, 나는 거의 항상 FormLayout of JGoodies을 선택하는 것입니다. 물론 이것은 표준 JDK에는 포함되어 있지 않으므로이 옵션이 선택 사항인지 여부는 확실하지 않습니다.

레이아웃의 주된 이점 (imo) 중 하나는 구성 요소를 적절하게 조정할 수 있고 적절하고 제어 가능한 크기 조정 동작이 가능하다는 것입니다.