Существует множество вариантов, в зависимости от ваших потребностей.
Если вы хотите знать, когда любой существующий компонент добавляется к родителю, вы можете добавить 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. ancestorAdded(AncestorEvent) будет называться каждые время, когда компонент становится видимым. Например, AncestorListener на JPanel внутри JTabbedPane будет получать такое событие каждый раз, когда пользователь выбирает эту вкладку для отображения.
Как насчет 'jComponent.getParent()! = Null'? – BackSlash
Но, может быть, это может быть какой-то слушатель? –
Вы можете переопределить метод addNotify. Но убедитесь, что вы вызываете super.addNotify. – Petr