gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:07:25 25 4
gpt4 key购买 nike

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

cards[] 是一个 JLabel 数组。 panel2a 和 layer 是 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();
}
}
}

最佳答案

如果这两个数组实际上保存了对同一个对象的引用,那么(据我所知)该对象的任何方法都不可能根据对象引用的存储位置而表现不同。换句话说,如果它是同一个对象,那么 math.cards[i] == cards[i] 绝对不可能根据您是否调用 获得不同的结果>math.cards[i].anyMethod()cards[i].anyMethod()

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

关于java - Swing:从另一个类获取组件的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14116331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com