2017-01-03 26 views
1

私はBoxLayout(ページ軸)を持つJPanelを持っていて、もう一方の上に2つのコンポーネントをレイアウトしたいと思います。BoxLayout左余白を追加

enter image description here

私の問題は、どのように私はこれを取り除くことができ、大lipsumボックスの左のマージンのですか?上位のコンポーネントを追加しないと、マージンはありません。ここで

enter image description here

は、第2の画像は headerPanelを追加しないで作成されて、私のコードです:

JLabel commandLabel = new JLabel(command); 
    JLabel paramLabel = new JLabel(params); 
    JLabel descLabel = new JLabel("<html><body style='width: 200px;'>" + description + "</body></html>"); 
    Font baseFont = commandLabel.getFont(), commandFont, paramFont, descFont; 

    commandFont = baseFont.deriveFont(Font.BOLD); 
    paramFont = baseFont.deriveFont(Font.ITALIC); 
    descFont = baseFont.deriveFont(Font.PLAIN); 

    commandLabel.setFont(commandFont); 
    paramLabel.setFont(paramFont); 
    descLabel.setFont(descFont); 
    descLabel.setAlignmentX(LEFT_ALIGNMENT); 
    descLabel.setBorder(BorderFactory.createStrokeBorder(new BasicStroke())); 
    JPanel headerPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); 
     headerPanel.add(commandLabel); 
     headerPanel.add(paramLabel); 
    this.add(headerPanel); 
    this.add(descLabel); 

このクラスはJPanelを拡張し、

をD」単に pack()である、 JFrameに追加されます
+2

「これは私のコードです」 - 問題を示す適切な[mcve]を投稿します。提供されたコードをコンパイル/実行することはできません。 – camickr

答えて

1

私は観察された振る舞いがどこから来るのか分からないが、期待される表示は中間にJPanelを使用することによって達成することができたお使いのラベルには、直接ではなくJLabelを追加:私の問題は、大きなlipsumボックスの左のマージンである

JLabel commandLabel = new JLabel(command); 
    JLabel paramLabel = new JLabel(params); 
    JLabel descLabel = new JLabel("<html><body style='width: 200px;'>" + description + "</body></html>"); 
    Font baseFont = commandLabel.getFont(), commandFont, paramFont, descFont; 

    commandFont = baseFont.deriveFont(Font.BOLD); 
    paramFont = baseFont.deriveFont(Font.ITALIC); 
    descFont = baseFont.deriveFont(Font.PLAIN); 

    commandLabel.setFont(commandFont); 
    paramLabel.setFont(paramFont); 
    descLabel.setFont(descFont); 
    descLabel.setAlignmentX(LEFT_ALIGNMENT); 
    descLabel.setBorder(BorderFactory.createStrokeBorder(new BasicStroke())); 
    JPanel headerPanel = new JPanel(new FlowLayout(FlowLayout.LEADING)); 
    JPanel descPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));// added 
    headerPanel.add(commandLabel); 
    headerPanel.add(paramLabel); 

    descPanel.add(descLabel);// added 

    this.add(headerPanel); 
    this.add(descPanel);// modified 
+0

私はこれを試してみる、ありがとう(devのマシンのバッテリー切れ) –

1

、どのように私はこれを取り除くことができますか?

コンポーネントのアライメントを一致させる必要があります。これは、すべてのコンポーネントの位置合わせ「X」プロパティを左揃えにする必要があります。

私はJLabelを推測しているが、あなたが使用する必要があるので、整列の中心である:

descLabel.setAlignmentX(JLabel.LEFT_ALIGNMENT); 

は、より多くの情報と例についてHow to Use BoxLayout上のSwingのチュートリアルからFixing Alignment Problemsを参照してください。

関連する問題