如何检查 JPanel 是否包含 JLabel?

How to check a JPanel contains JLabel or not?

我在地图中有 16 个 JLabel,还有一个 JPanel。现在我想检查 JPanel 在 16 个中是否包含 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;
} 

我在和他们的名字比较。但是我在 if (panel.getName() == Value.getParent().getName()) 这一行收到 "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException" 错误。

SwingUtilities 包含许多可以帮助您执行此操作的方法,但我的猜测是 getAncestorNamed 可能是最有用的:

没有父对象的 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;
}