私は GridBagLayout で JDialog を使用しています。このレイアウトはコンテナーとコンポーネントのサイズを自動的に決定するため、setSize は何も使用していません。ただし、GUI を描画すると、コンテナーが不必要に引き伸ばされているように見えます。
GridBagLayout がコンテナのサイズを「必要なだけ」にしないのはなぜですか? 基本的に、ダイアログのサイズをテーブルと同じくらい大きくしたいです。コード スニペットは次のとおりです。
public class GridBagLayoutTester
{
public static void main(String[] args)
{
JDialog mDialog = new JDialog();
JPanel panel1 = new JPanel();
panel1.setLayout(new GridBagLayout());
// Create a table to be added to the panel
JTable table = new JTable(4,4);
JScrollPane scrollpane = new JScrollPane(table);
scrollpane.setBorder(BorderFactory.createLineBorder(Color.ORANGE, 5));
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = gbc.gridy = 0;
gbc.fill = GridBagConstraints.NONE;
gbc.anchor = GridBagConstraints.FIRST_LINE_START;
// Add table to the panel
panel1.add(scrollpane, gbc);
mDialog.add(panel1, BorderLayout.CENTER);
// Display the window.
mDialog.pack();
mDialog.setVisible(true);
}
}