【问题标题】:Change FormLayout alignment at runtime在运行时更改 FormLayout 对齐方式
【发布时间】:2012-03-23 05:04:48
【问题描述】:

有没有办法使用 JGoodies FormLayout 来更改组件的对齐方式?

例如,

CellConstraints cc = new CellCosntraints();
panel.add(component,cc.xy(1,1,CellConstraints.DEFAULT,CellConstraints.FILL));

如果我想将 component 更改为具有 DEFAULT 而不是 FILL 的行约束,现在有没有办法更改它,因为它已经设置而不删除和重新添加组件?

【问题讨论】:

    标签: java swing jgoodies form-layout


    【解决方案1】:

    看起来你可以:

    FormLayout l = new FormLayout();
    ...
    l.setContraints(component, newconstraints);
    

    然后可能在容器上做一个revalidate() 来更新东西。

    【讨论】:

    • 啊,我想我不会使用它,因为它需要一个全新的单元格约束对象。我将修改当前的,然后为该组件重置它。我会尽快试一试,谢谢。
    • 代码克隆了约束对象,所以应该是安全的。 source
    • 你确定吗?我不认为它实际上克隆了该对象。但我仍然认为这会起作用,因为您可以为多个组件重用 cellconstraints 对象。
    • 我链接了显示它确实克隆()约束的源代码。
    【解决方案2】:

    有两种方法(@Jim +1 表示正确方向)

    1) 填充容器内的可用维度而不调整容器大小

    revalidate() //covered validate()
    repaint() // required in some cases for JLabel, JTextComponents, JScrollPane ...
    

    2) 使用容器调整大小填充容器内的可用维度

    pack();
    

    this code can help you

    【讨论】:

    • 虽然属实,但与问题无关;-)
    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多