Swing JComponent.getComponentCount()始终返回0

时间:2016-09-08 17:48:24

标签: java swing jmenu jpopupmenu

我很困惑为什么会这样。最终我想要在索引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行为?

1 个答案:

答案 0 :(得分:3)

  

我正在使用一个声明为JComponent的类,但它根据条件实现为JMenu或JPopupMenu。在这种情况下,它被声明为JMenu。也许这是奇怪的JMenu行为?

假设您要将JMenuItem添加到JMenuJMenu处理添加JMenuItem的方式不同,因为它们会添加到基础{{1}因此,您应该获取JPopupMenu的{​​{1}}并计算此Container中包含的项目。例如:

JPopupMenu