2017-06-16 9 views
1

テーブルの下に2つのボタンがあります。しかし、1つのボタンは私のテーブルのすべてのスペースをほぼ占有しています。私は2つのボタンの間の列スペースをトリミングしたかった。左のボタンにweight.x = 1を追加すると、右に押されません。GridBagLayoutを使用してJTableの下の列スペースをトリム

gbc.anchor = GridBagConstraints.FIRST_LINE_START; 
gbc.insets = new Insets(20, 10, 0, 0); 
gbc.gridx = 0; 
gbc.gridy = 0; 
JTable tbl = new JTable(); 
tbl.setPreferredScrollableViewportSize(new Dimension(500, 200)); 
tbl.setRowHeight(30); 

JScrollPane pane = new JScrollPane(tbl); 
panelCenter.add(pane, gbc); 

gbc.anchor = GridBagConstraints.FIRST_LINE_START; 
gbc.gridx = 0; 
gbc.gridy = 1; 
JButton btnAdd = new JButton("Add"); 
panelCenter.add(btnAdd, gbc); 

gbc.gridx = 1; 
gbc.gridy = 1; 
gbc.weightx = 1; 
gbc.weighty = 1; 
JButton btnRemove = new JButton("Remove"); 
panelCenter.add(btnRemove, gbc); 

出力:そのgridwidthプロパティはJTableは2つの列を占有することを可能にするために2に設定されている必要があるのJTableを保持するJScrollPaneで使用 SC

答えて

3

のGridBagConstraints、他のすべてが1のgridwidthを使用する必要がありながら、 。注意の

gbc.anchor = GridBagConstraints.FIRST_LINE_START; 
gbc.insets = new Insets(20, 10, 0, 0); 
gbc.gridx = 0; 
gbc.gridy = 0; 
gbc.gridwidth = 2; // ****** add 
JTable tbl = new JTable(); 

// ..... 

gbc.gridwidth = 1; // ****** add 

注:私は通常(私はアイテムの真のグリッドを追加している場合を除き)私は追加しているすべての項目の新しいてGridBagConstraintオブジェクトを作成し、またはOで、1を作成するためのユーティリティメソッドを使用しますプロパティの伝播エラーを避けるためにrder。

+0

'gridwidth'は私の問題を修正しました。あなたはプロパティの伝播エラーのような例を挙げることができますか?まだそれに遭遇していない。 – Francisunoxx

+0

@Francisunoxx:同じgbc変数とオブジェクトを使用する場合、JScrollPaneを追加した後に 'gbc.gridwidth = 1;'を呼び出さなかった場合、エラーが発生します。今度はすべてのコンポーネントが2のグリッド幅で追加されます。 –

+0

私はどこが間違っているかを見ます。私はユーティリティメソッドを作成して、同じgbcを共有できないようにする必要があります。私はあなたの助けとヒントを評価しました! – Francisunoxx

0

gbc.anchorGridBagConstraints.LINE_ENDに変更する必要があります。それは "削除"ボタンの隣にあなたの "追加"ボタンを置きます...

関連する問題