gpt4 book ai didi

java - Swing 监听子布局的变化

转载 作者:行者123 更新时间:2023-12-01 05:59:36 25 4
gpt4 key购买 nike

我有一个 JPanel,当它的布局发生变化时,我需要重新布局父级。这可以使用 panel.getParent().validate() 轻松完成,但问题是,我并不总是知道它的直接父级,或者树中某处的某个父级是否确实需要验证。有没有办法让父组件监听其子组件何时重新布局,以便父组件可以将自己转发出去。

编辑:澄清

就我而言,父级有一些额外的组件需要在子级更改时转发,但情况并非总是如此。同一个子级可以用在另一个父级上,而父级不需要转发出去,所以我想让父级决定是否/何时应该转发自己。

// this layoutChangedListener is what I'm trying to accomplish
child.addLayoutChangedListener(new LayoutChangedListener() {
public void layoutChanged() {
parent.validate();
}
});

谢谢

杰夫

最佳答案

您可以在父类中实现 LayoutChangedListener,当您初始化子类时,您应该将父类添加为监听器。这样你只需要调用validate函数即可。

一个小例子:

class Parent extends JPanel implements LayoutChangedListener {
//Your class code
...
// The LayoutChangedListener function
public void layoutChanged() {
validate();
}
}

您还必须更改 child.addLayoutListener() 行。新的必须如下:child.addLayoutListener(this)

可能这不是最漂亮的方式,但它确实有效!

问候!

关于java - Swing 监听子布局的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com