我正在使用带有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);
}
}
答案 0 :(得分:0)
当默认大小调整不符合您的要求时,您必须设置组件的首选大小。
更改程序以添加以下行:
// Display the window.
mDialog.pack();
Dimension d = table.getPreferredSize();
d.width += 16;
d.height += 10;
scrollpane.setPreferredSize(d);
mDialog.pack();
mDialog.setVisible(true);
附加宽度为16可容纳边框和垂直滚动条。
10的额外高度适应边界。