如何检查JPanel是否包含JLabel?

时间:2016-04-05 15:49:01

标签: java swing nullpointerexception jpanel

我在Map中有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;
} 

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

2 个答案:

答案 0 :(得分:2)

SwingUtilities包含许多可以帮助您实现此目的的方法,但我的猜测是getAncestorNamed可能是最有用的:

答案 1 :(得分:1)

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