2016-05-15 1 views
0

私は5 JPanelsが縦に並んでいます。各JPanelには同じ要素が入力されていますが、異なる値(JPanel,JButton,JLabel)が入力されています。GridBagLayoutは一直線になっていません

Panel Button Label 
Panel Button Label 

言い訳それは間隔が少しオフですが、コードは、各コンテナのと全く同じである

Panel Button Label 
Panel Button  Label 

次のように輩出だ:私は彼らが次のようになりたいです。これをどうすれば解決できますか?

public class AnswerChoice extends JPanel { 
    private static final long serialVersionUID = 1L; 

    private AnswerButton button; 
    private JLabel answerLabel; 

    public AnswerChoice(String imageURL) { 
     setBackground(Color.RED); 
     setLayout(new GridBagLayout()); 
     button = new AnswerButton(imageURL); 
     answerLabel = new JLabel(); 
     answerLabel.setFont(new Font("Times New Roman", Font.PLAIN, 32)); 

     GridBagConstraints gbc = new GridBagConstraints(); 

     JPanel panel = new JPanel(); 
     panel.setBackground(Color.ORANGE); 
     gbc.fill = GridBagConstraints.BOTH; 
     gbc.gridx = 1; 
     gbc.weightx = 0.2; 
     add(panel, gbc); 

     gbc.fill = GridBagConstraints.NONE; 
     gbc.gridx = 2; 
     gbc.weightx = 0.0; 
     gbc.insets = new Insets(0, 0, 0, 30); 
     add(button, gbc); 

     gbc.fill = GridBagConstraints.BOTH; 
     gbc.gridx = 3; 
     gbc.weightx = 0.8; 
     add(answerLabel, gbc); 
    } 

} 

JLabelはそれでテキストを持っていませんが、私はどこか別の場所に設定します。

+0

おそらく 'gbc.anchor = GridBagConstraints.BASELINE_LEADING;'が必要です。アンカーフィールドは、セル内のコンポーネントの配置を決定します。 – VGR

+2

3列テーブルはデータの表示に適しているようです。異なるパネルの 'GridBagLayout'インスタンスを別々に整列させることはできません! –

+0

テーブル内で比例するスペースを与えることはできますか?私は 'GridBagLayout'を使いましたので、0.2と0.8の重みを使うことができました。 – kneedhelp

答えて

4

ただし、コードは各コンテナでまったく同じです。

レイアウトは、コンテナに追加されたコンポーネントに基づいて、各コンテナごとに独立して行われます。したがって、コンテナ上の各コンポーネントのサイズは重要です。各コンテナには、他に4つのコンテナがあることがわかりません。

私は5つのJPanelを縦に並べます。

したがって、GridBagLayoutを使用して1つのパネルを作成し、15個のコンポーネントすべてをそのパネルに追加する必要があります。次に、3つの列すべてが、5行の各要素に基づいてサイズが決定されます。

または、3つのコンポーネントのそれぞれに相対サイズを.2、0、.8として割り当てようとしています。この場合、それぞれのパネルでRelative Layoutを使用することができます。 Relative Layoutを使用すると、ボタンを希望のサイズで表示し、パネルとラベルの制約としてそれぞれ0.2fと0.8fを使用します。

+0

それはすごいレイアウトです、ちょうど私が探していたものです!ありがとう! – kneedhelp

関連する問題