在Swing中侦听新的子组件

时间:2009-10-30 02:17:35

标签: java swing events

我有一个特定的要求,即特定JComponent的所有子节点都关闭了双缓冲。我可以轻松地通过它轻松递归并在需要时禁用它们,但是我想检测新的子组件的添加,无论它们在层次结构中的位置如何,然后禁用它。

我看了一下addHierarchyChangeListener,但它似乎只检测父母而不是孩子的变化。

有人能指出我正确的道路吗?

2 个答案:

答案 0 :(得分:4)

您正在寻找ContainerListener。这是Sun's demo

答案 1 :(得分:1)

我认为你需要一个RecursiveContainerListener,它可以在给定父组件中添加或删除任何组件时执行公共操作。请找到它的代码here(RecursiveContainerListener.java)。它完全符合你的要求。您只需要更改/覆盖handleAdd和handleRemove方法以转换为双缓冲。

最后,您只需将其添加到您的父母:

parentComponent.add(new RecursiveContainerListener());

无需为每个子节点显式添加侦听器:)