2016-10-29 18 views
0

私はかなり迷惑な問題に遭遇しました。 JPanelはコンポーネント間に垂直方向のギャップを追加しています。私はそれを取り除く必要があります。Java JPanelコンポーネントを無効にする方法自動垂直サイズ変更

enter image description here

このように見えるように:私は、これは(ブルーラインは、私は取り除くしたいスペースです)取得しようとしている ここ

enter image description here

は私の現在のクラスです:

public class SummaryPanel extends JPanel 
{ 
    private JLabel bagelLabel; 
    private JLabel toppingLabel; 
    private JLabel coffeeLabel; 
    private JLabel shotsLabel; 

    private JLabel subtotal; 
    private JLabel tax; 
    private JLabel total; 

    private JPanel selectionsPanel; 
    private JPanel totalPanel; 

    public SummaryPanel() 
    { 
     bagelLabel = new JLabel("No bagel $0.00"); 
     toppingLabel = new JLabel("No topping $0.00"); 
     coffeeLabel = new JLabel("No coffee $0.00"); 
     shotsLabel = new JLabel("(Includes 0 shots) $0.00"); 

     subtotal = new JLabel(""); 
     tax = new JLabel(""); 
     total = new JLabel(""); 

     setLayout(new GridLayout(2,1)); 

     selectionsPanel = new JPanel(); 

     selectionsPanel.setLayout(new GridLayout(4,1)); 
     selectionsPanel.add(bagelLabel); 
     selectionsPanel.add(toppingLabel); 
     selectionsPanel.add(coffeeLabel); 
     selectionsPanel.add(shotsLabel); 

     totalPanel = new JPanel(); 
     totalPanel.setLayout(new GridLayout(3,1)); 
     totalPanel.add(subtotal); 
     totalPanel.add(tax); 
     totalPanel.add(total); 

     totalPanel.setVisible(false); 

     add(selectionsPanel); 
     add(totalPanel); 
    } 
} 

答えて

3

レイアウトマネージャによって制御されます。

setLayout(new GridLayout(2,1)); 

GridLayoutを使用しているため、2つのコンポーネントのそれぞれが同じスペースになります。

selectionsPanel.setLayout(new GridLayout(4,1)); 

各JLabelは、各パネルで使用可能なスペースの合計の1/4を得ます。今なサイズが尊重される

add(selectionsPanel, BorderLayout.PAGE_START); 
add(totalsPanel, BorderLayout.PAGE_END); 

:あなたが使用してパネルにコンポーネントを追加するときに

//setLayout(new GridLayout(2,1)); 
setLayout(new BorderLayout); 

は、代わりにあなたはのBorderLayoutを使用することができます。

0

GridLayoutは、パネルを行数と列数に分割しますnsが指定され、各コンポーネントはこれらのセルの1つを完全に埋めます。

BoxLayoutを代わりに使用することをおすすめします。これにより、コンポーネントを不快に拡張することなくコンポーネントをスタックすることができます。

関連する問題