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