我有一个JPanel,当其布局更改时,我需要重新布局父级。这可以使用panel.getParent()。validate()轻松完成,但是问题是,我并不总是知道它的直接父级,还是树中某个位置的某些父级确实是需要验证的父级。父组件是否可以侦听以查看其子组件何时重新布置,以便父组件可以自行中继。
编辑:澄清
在我的情况下,父级有一些额外的组件,当子级更改时,这些组件需要中继出去,但这并非总是如此。相同的孩子可以用在另一个不需要重新父项的父项上,因此我想让父项决定是否/何时应该将其自身转发出去。
// this layoutChangedListener is what I'm trying to accomplish
child.addLayoutChangedListener(new LayoutChangedListener() {
public void layoutChanged() {
parent.validate();
}
});
谢谢,
杰夫
最佳答案
您可以在父类中使用implements LayoutChangedListener
,并且在初始化子级时,应将父级添加为侦听器。这样,您仅需调用validate函数。
一个小例子:
class Parent extends JPanel implements LayoutChangedListener {
//Your class code
...
// The LayoutChangedListener function
public void layoutChanged() {
validate();
}
}
您还必须更改
the child.addLayoutListener()
行。新的必须如下:child.addLayoutListener(this)
可能这不是最漂亮的方法,但是可以!
问候!