Swing:从另一个类获取组件的父级

时间:2013-01-02 02:45:45

标签: java swing components parent-child

我有一个主类,我的所有gui组件都被称为Math.java。在一个单独的类(Calc)中,我得到了所有组件,并将它们保存在Calc的构造函数中的Math的本地组件中。唯一不起作用的是当我尝试获取其中一个组件的父组件时,它总是返回null。当我直接访问数学中的JLabel时,它可以工作。

cards []是一个JLabel数组。 panel2a和图层是JPanels。

 public void clear()
{
    for(int i =0;i <cards.length; i++)
    {
//this works, calling the components directly
        if(math.cards[i].getParent().equals(math.panel2a) )
        {
            math.panel2a.remove(cards[i]);

            layer.add(cards[i]);

            layer.repaint();
        }
//this doesn't work, using the local components
        if(cards[i].getParent().equals(panel2a) )
        {
            panel2a.remove(cards[i]);

            layer.add(cards[i]);

            layer.repaint();
        }
   }
}

1 个答案:

答案 0 :(得分:0)

如果两个数组实际上保持对同一个对象的引用,那么根据对象引用的存储位置,任何该对象的方法都无法表现出不同的行为(我知道)。换句话说,如果它是同一个对象,那么math.cards[i] == cards[i]并且绝对没有办法让您获得不同的结果,具体取决于您是拨打math.cards[i].anyMethod()还是{{1} }。

由于您看到不同的结果,因此阵列不能具有相同的对象。您可能还没有将本地cards[i].anyMethod()数组的内容添加到任何容器中。另外请记住,当您将组件添加到一个容器时,该组件会自动从其可能已存在的任何容器中删除。