2016-10-29 7 views
0

アンアラインドです:列は、一番左の列は、私はここに参照てるものです

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

について一週間前、私はLinuxのミントの賛成でWindows 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)のSwingチュートリアルのセクションを読んでください。 – camickr

+0

あなたは、古くて恐ろしいGridBagLayoutを推薦することによって、人々に大きな打撃を与えています。 –

答えて

1

問題は水平レイアウトグループにあります。あなたは最初の2つのグループを閉じた右の丸い括弧で終わらせませんでした。

私もコードを少し改善しました。私は、垂直グループ内のベースラインアラインメントを持つテキストフィールドの垂直方向の成長を抑制しました。

また、レイアウトの最小サイズをハードコーディングするのではなく、テキストフィールドに予想カラム数を定義することが望ましいです。

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

関連する問題