我很困惑为什么会这样。最终我想要在索引0处测试组件的逻辑,但首先我需要这个方法准确地返回。以下是我返回的代码示例0:
parentComp.add(saveAsItem);
parentComp.add(saveItem);
if(manager.getListConfigurations().size() > 0){
parentComp.add(loadMenu);
parentComp.add(removeMenu);
}
System.out.println("COUNT: " + parentComp.getComponents().length);
该println语句总是返回0.我认为它应该返回2或4,具体取决于是否满足上述条件。
这是非常奇怪的行为。我似乎无法理解为什么会这样。帮助将不胜感激。
编辑:如果我执行以下操作,我会收到例外情况:
parentComp.getComponent(0).getClass().getName();
java.lang.ArrayIndexOutOfBoundsException: No such child: 0
所以它显然不会认为有任何孩子,但有。我正在那里添加它们。
编辑2:我使用声明为JComponent的类,但根据条件将其实现为JMenu或JPopupMenu。在这种情况下,它被宣布为JMenu。也许这是奇怪的JMenu行为?
答案 0 :(得分:3)
我正在使用一个声明为JComponent的类,但它根据条件实现为JMenu或JPopupMenu。在这种情况下,它被声明为JMenu。也许这是奇怪的JMenu行为?
假设您要将JMenuItem
添加到JMenu
,JMenu
处理添加JMenuItem
的方式不同,因为它们会添加到基础{{1}因此,您应该获取JPopupMenu
的{{1}}并计算此Container中包含的项目。例如:
JPopupMenu