任何解决方法?
myContainer.getContentPane().addContainerListener(new ContainerListener(){
@Override public void componentAdded(ContainerEvent e) {
System.out.println(e.getChild().getClass().getName().toString());
}});
myContainer.add(new JPanel());
myContainer.setJMenuBar(new JMenuBar());
最佳答案
JMenuBar不在内容窗格中。
有关框架的结构及其组件的信息,请参见Swing教程的Using Top Level Containers部分。
setJMenuBar()方法中的实际代码为:
getRootPane().setMenuBar(menubar);
因此,我猜想ContainerListener需要添加到根窗格中。
编辑:
在教程链接中,您可以看到框架结构如下:
根窗格
分层窗格
菜单栏
内容窗格
从我发布的代码看来,菜单栏已添加到根窗格中,这就是为什么我建议将容器侦听器添加到根窗格中的原因。但是,您似乎需要将ContainerListener添加到分层窗格中:
getLayeredPane().addContainerListener(new ContainerAdapter()...