Java Swing:获取组件';他是另一个班级的家长

Java Swing:获取组件';他是另一个班级的家长,java,swing,components,parent-child,Java,Swing,Components,Parent Child,我有一个主类,其中所有gui组件都被称为Math.java。在一个单独的类(Calc)中,我获取所有组件并将它们保存在Calc构造函数中Math的本地组件中。唯一不起作用的是,当我尝试获取其中一个组件的父组件时,它总是返回null。当我直接访问数学中的jlabel时,它是有效的 cards[]是一组jlabel。面板2a和层为JPanel public void clear() { for(int i =0;i <cards.length; i++) { //this w

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

cards[]是一组jlabel。面板2a和层为JPanel

 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();
        }
   }
}
public void clear()
{

对于(int i=0;i如果两个数组实际上包含对同一对象的引用,那么(据我所知)该对象的任何方法都无法根据对象引用的存储位置而表现出不同的行为。换句话说,如果它是同一个对象,则
math.cards[i]==cards[i]
而且根据调用的是
math.cards[i].anyMethod()
还是
cards[i].anyMethod(),您绝对不可能得到不同的结果


由于您看到的结果不同,因此数组不能具有相同的对象。您可能没有将本地
数组的内容添加到任何容器中。还要记住,当您将组件添加到一个容器中时,该组件会自动从其可能已在的任何容器中删除

“我获取所有组件,并将它们保存在Calc构造函数中Math的本地组件中。”showthis@rasen58向我们展示一些代码。很可能,您正在访问这些组件的不同实例。