2016-10-29 10 views
0

정렬되지 않은 것입니다 :열은 왼쪽 열에 내가 여기 참조하고있는 무슨이다

https://i.stack.imgur.com/zXIcF.png

약 일주일 전, 나는 리눅스 민트에 찬성 윈도우 10 도랑 내 아버지를 설득했다. 단순한 인터페이스를 좋아하는 점을 감안할 때 지금까지는 전환이 상당히 울퉁불퉁했습니다. 그는 커맨드 라인에서 일할 의사가 없으므로 Java 사용자 인터페이스를 만들기 위해 하루 중 더 나은 시간을 보냈습니다. 그래서 그는 스크립트를 실행할 수없는 방법에 관한 잔소리를 그만 둘 것입니다. 나는 그것을 완벽하게하고 싶다. 그리고이 정렬이 나에게서 성가신 일이다. 나는 정직하게 다른 사람들과 비교하여 그 칼럼에 대해 다른 점을 이해하지 못한다.

여기에 어떤 도움이 많이 주시면 감사하겠습니다

private void format() { 
    GroupLayout layout = new GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setAutoCreateGaps(true); 
    layout.setAutoCreateContainerGaps(true); 

    layout.setHorizontalGroup(layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(LEADING)) 
       .addComponent(inputLabel) 
       .addComponent(outputLabel) 
       .addComponent(exitButton) 
      .addGroup(layout.createParallelGroup(LEADING) 
        .addComponent(inputTextField, 300, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(outputTextField, 300, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        ) 
      .addGroup(layout.createParallelGroup(LEADING).addComponent(inputButton).addComponent(outputButton) 
        .addComponent(compressButton))); 

    layout.linkSize(SwingConstants.HORIZONTAL, inputButton, outputButton); 

    layout.setVerticalGroup(layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(LEADING) 
        .addComponent(inputLabel) 
        .addComponent(inputTextField, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(inputButton)) 
      .addGroup(layout.createParallelGroup(LEADING) 
        .addComponent(outputLabel) 
        .addComponent(outputTextField, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(outputButton)) 
      .addGroup(layout.createParallelGroup(LEADING) 
        .addComponent(exitButton) 
        .addComponent(compressButton))); 

    setTitle("PDF CONVERTER"); 
    pack(); 
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
} 

모든 GroupLayout 물건을 수행 내 포맷 방법입니다. 미리 감사드립니다!

+0

내가 IDE에 의해 생성 된 GroupLayout 코드를 읽고 배운 적이 : :) 여기

는 스크린 샷입니다. 이유 중 하나는 다른 IDE로 이동 한 경우 코드가 이식 가능하지 않기 때문입니다. 드래그/드롭 도구는 다른 코드를 생성합니다. 간단한 해결책은'GridBagLayout'을 사용하는 것입니다. 그러면 간단한 그리드 레이아웃을 완벽하게 제어 할 수 있습니다. 정보 및 예제는 [GridBagLayout 사용 방법] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html)에서 스윙 튜토리얼의 섹션을 읽어보십시오. – camickr

+0

오래되고 끔찍한 GridBagLayout을 추천하여 사람들에게 커다란 소동을 가하고 있습니다. –

답변

1

문제는 가로 레이아웃 그룹에 있습니다. 첫 번째 두 그룹을 마침표로 닫지 않았습니다.

또한 코드를 조금 개선했습니다. 수직 그룹에서 기본 정렬을 사용하여 텍스트 필드의 수직 확장을 강조했습니다.

또한 레이아웃의 최소 크기를 하드 코딩하는 대신 텍스트 필드에 예상 열 수를 정의하는 것이 좋습니다.

package com.zetcode; 

import java.awt.EventQueue; 
import javax.swing.GroupLayout; 
import javax.swing.JButton; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import static javax.swing.JFrame.EXIT_ON_CLOSE; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 
import javax.swing.SwingConstants; 

public class PdfConverterEx extends JFrame { 

    public PdfConverterEx() { 

     initUI(); 
    } 

    private void initUI() { 

     JLabel inputLabel = new JLabel("Input:"); 
     JLabel outputLabel = new JLabel("Output:"); 

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

     JButton browseBtn1 = new JButton("Browse"); 
     JButton browseBtn2 = new JButton("Browse"); 

     JButton exitBtn = new JButton("Exit"); 
     JButton compressBtn = new JButton("Compress"); 

     createLayout(inputLabel, outputLabel, field1, field2, 
       browseBtn1, browseBtn2, exitBtn, compressBtn); 

     setTitle("PDF Converter"); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 

    } 

    private void createLayout(JComponent... arg) { 

     GroupLayout layout = new GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setAutoCreateGaps(true); 
     layout.setAutoCreateContainerGaps(true); 

     layout.setHorizontalGroup(layout.createSequentialGroup() 
       .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING) 
         .addComponent(arg[0]) 
         .addComponent(arg[1]) 
         .addComponent(arg[6])) 
       .addGroup(layout.createParallelGroup() 
         .addComponent(arg[2]) 
         .addComponent(arg[3])) 
       .addGroup(layout.createParallelGroup() 
         .addComponent(arg[4]) 
         .addComponent(arg[5]) 
         .addComponent(arg[7])) 
     ); 

     layout.linkSize(SwingConstants.HORIZONTAL, arg[5], arg[6]); 

     layout.setVerticalGroup(layout.createSequentialGroup() 
       .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
         .addComponent(arg[0]) 
         .addComponent(arg[2]) 
         .addComponent(arg[4])) 
       .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
         .addComponent(arg[1]) 
         .addComponent(arg[3]) 
         .addComponent(arg[5])) 
       .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
         .addComponent(arg[6]) 
         .addComponent(arg[7]))); 

     pack(); 

    } 

    public static void main(String[] args) { 

     EventQueue.invokeLater(() -> { 
      PdfConverterEx ex = new PdfConverterEx(); 
      ex.setVisible(true); 
     }); 
    } 
} 

Linux로 전환 할 때 행운이 있기를 바랍니다.

enter image description here

+0

번들 감사합니다. 나는 작은 괄호를 비웃는 것을 발견하지 못했다. 나는 네 대답을 upvoted,하지만 내 담당자가 너무 낮게 표시합니다. 너가 알아야한다고 생각 했어. – Discordance