Ern*_*dis 1 java swing jcomponent
首先,创建JComponent实例jComponent。然后像一样将其添加到其父项中parent.add(jComponent);。现在,我想在jComponent课堂上知道它已添加到它的父项中。有可能这样做吗?
目标是jComponent在已将其添加到父项时设置父项,例如:
Container window = getParent();
while (!(window instanceof JWindow)) {
window = window.getParent();
}
JWindow parent = (JWindow) window;
Run Code Online (Sandbox Code Playgroud)
有多种选择,具体取决于您的需求。
如果您想知道何时将任何现有组件添加到父级,则可以向其添加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());
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果已经在创建自定义组件,则可以覆盖“ addNotify()”方法:
@Override public void addNotify() {
super.addNotify();
// do something here with getParent();
}
Run Code Online (Sandbox Code Playgroud)
如果只想在组件可见后才知道父项,则可以使用AncestorListener。该 ancestorAdded(AncestorEvent)将被调用每一个组件变得可见时。例如,每次用户选择该选项卡进行显示时,JTabbedPane内的JPanel上的AncestorListener都会收到此类事件。
| 归档时间: |
|
| 查看次数: |
692 次 |
| 最近记录: |