我在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())
错误。
答案 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;
}