我对GridBagConstraints中weightx和ipadx之间的区别感到困惑。对于我观察到的,两者都改变了单元格的宽度。
基于文档。
的weightx
指定如何分配额外的水平空间。
ipadx
此字段指定组件的内部填充,添加到组件最小宽度的空间。
对我来说,两者在单元格的宽度尺寸上都有相同的结果。那么当你调整框架或面板的大小时,有人可以解释它在布局中的效果吗?什么时候使用weightx而不是ipadx?提前谢谢。
答案 0 :(得分:1)
对我来说,两个细胞的宽度都有相同的结果。
应该非常明显的区别是什么。
ipadx是添加到宽度的固定数量。因此,当打包框架时,它会影响组件的宽度。
weightx控制当包含组件的面板宽度发生变化时,色谱柱的增长/收缩程度。因此,只有在框架可见并且您调整框架大小时,您才会注意到效果。
如果您没有看到差异,那么您的代码未正确实施。也许您的布局管理器不允许面板动态增长,因此组件也不能增长。
您的代码的基本结构将是:
JTextField textField = new JTextField(20);
GridBagConstraints gbc = new GridBagConstraints();
//gbc.ipadx = 100;
//gbc.weightx = 1.0f;
JPanel content = new JPanel( new GridBagLayout() );
content.add(textField, gbc);
frame.setContentPane( content );
如果您仍然遇到问题,请发布展示行为的正确SSCCE。那就是创建一个包含单个组件的框架。仅使用ipadx,然后使用weightx进行测试,最后使用两个约束进行测试,您将看到差异。