我对GridBagConstraints中weightx和ipadx之间的区别感到困惑。就我所观察到的,两者都改变​​了单元的宽度大小。

基于文档。


  重量x


指定如何分配额外的水平空间。


  ipadx


该字段指定组件的内部填充,要添加多少空间以最小化组件的宽度。

对我来说,两个单元格的宽度大小都具有相同的结果。因此,有人可以在调整框架或面板大小时解释其在布局中的影响还是其影响?何时使用weightx而不是ipadx?提前致谢。

最佳答案

对我来说,两个单元格的宽度大小都具有相同的结果。


很明显的区别是什么。


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,最后使用两个约束进行测试,您将看到差异。

09-27 02:46