在GridBagConstraints(Java)中区分weightx和ipadx

时间:2015-12-25 11:56:24

标签: java

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

基于文档。

  

的weightx

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

  

ipadx

此字段指定组件的内部填充,添加到组件最小宽度的空间。

对我来说,两者在单元格的宽度尺寸上都有相同的结果。那么当你调整框架或面板的大小时,有人可以解释它在布局中的效果吗?什么时候使用weightx而不是ipadx?提前谢谢。

1 个答案:

答案 0 :(得分:1)

  

对我来说,两个细胞的宽度都有相同的结果。

应该非常明显的区别是什么。

  1. ipadx是添加到宽度的固定数量。因此,当打包框架时,它会影响组件的宽度。

  2. weightx控制当包含组件的面板宽度发生变化时,色谱柱的增长/收缩程度。因此,只有在框架可见并且您调整框架大小时,您才会注意到效果。

  3. 如果您没有看到差异,那么您的代码未正确实施。也许您的布局管理器不允许面板动态增长,因此组件也不能增长。

    您的代码的基本结构将是:

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