有多种选择,看你的需要。
如果您想知道任何现有组件何时添加到父组件,您可以向其添加 HierarchyListener 并侦听在组件添加到父组件后发送的PARENT_CHANGED类型的事件。
例子:
component.addHierarchyListener(new HierarchyListener() {
@Override
public void hierarchyChanged(HierarchyEvent e) {
if ( (e.getChangeFlags() & HierarchyEvent.PARENT_CHANGED) != 0) {
if (getParent() == e.getChangedParent()) {
System.out.println("*** Added to parent " + e.getChangedParent());
}
}
}
});
如果您已经在创建自定义组件,则可以覆盖“addNotify()”方法:
@Override public void addNotify() {
super.addNotify();
// do something here with getParent();
}
如果您只想在组件可见后了解父级,则可以使用AncestorListener。每次组件可见时都会调用祖先添加(AncestorEvent)。 例如,每次用户选择要显示的选项卡时,JTabbedPane 内的 JPanel 上的 AncestorListener 都会收到这样的事件。