Java 如何检查JPanel是否包含JLabel?

Java 如何检查JPanel是否包含JLabel?,java,swing,nullpointerexception,jpanel,Java,Swing,Nullpointerexception,Jpanel,我在地图上有16个JLabel和一个JPanel。现在我想检查JPanel是否包含JLabel。 我尝试过这种方法: private int PanelContains(JPanel panel) { JLabel Value; for (Entry<Integer, JLabel> entry : Blackbox.entrySet()) { Value = entry.getValue(); if (panel.getName()

我在地图上有16个JLabel和一个JPanel。现在我想检查JPanel是否包含JLabel。 我尝试过这种方法:

private int PanelContains(JPanel panel) {
    JLabel Value;
    for (Entry<Integer, JLabel> entry : Blackbox.entrySet()) {
        Value = entry.getValue();
        if (panel.getName() == Value.getParent().getName()) {
             return 1;
        }
    }
    return 0;
} 
private int PanelContains(JPanel面板){
JLabel值;
for(条目:Blackbox.entrySet()){
Value=entry.getValue();
if(panel.getName()==Value.getParent().getName()){
返回1;
}
}
返回0;
} 

我在和他们的名字比较。但是我在线程“AWT-EventQueue-0”java.lang.NullPointerException“中遇到异常,如果(panel.getName()==Value.getParent().getName())这一行出现错误。

SwingUtilities包含许多方法,可以帮助您做到这一点,但我的猜测是,这可能是最有用的:

A
JLabel
没有父对象会导致此异常。请尝试下面的代码

private int panelContains(JPanel panel) {
    JLabel Value;
    for (Entry<Integer, JLabel> entry : Blackbox.entrySet()) {
        Value = entry.getValue();
        if (Value.getParent() == panel) {
             return 1;
        }
    }
    return 0;
} 
private int panelContains(JPanel面板){
JLabel值;
for(条目:Blackbox.entrySet()){
Value=entry.getValue();
if(Value.getParent()==面板){
返回1;
}
}
返回0;
} 

实际上,我指的面板是指特定的面板。所有16个标签也位于面板中,这里我想检查特定的面板。但在您的代码中,它检查是否有JLabel位于面板上,对吗?但我不想要它。它正在检查
Value
标签是否位于
面板中。我想它会按照您的要求工作。此外,我意识到您正在将字符串与
==
进行比较,这是错误的。即使您的方法是正确的,您也必须将字符串与以下等式进行比较:
panel.getName().equals(Value.getParent().getName())
“如何检查JPanel是否包含JLabel?”为什么?请参阅1)如需更快获得更好的帮助,请发布or。2) 参见&3)参见。。。。4) 请学习常见的Java命名法(命名约定-例如
EachWordUpperCaseClass
firstWordLowerCaseMethod()
firstWordLowerCaseAttribute
,除非它是
大写常量
),并一致使用它。