如果在 Jlist 中没有选择任何内容
If nothing is selected in Jlist
我正在编写一个程序,根据用户 select 在 JList 中的内容在图像上绘制不同的符号。这工作正常,但我的问题是如果 JList 中也没有 selected,我想在图像上放置一个符号。有什么方法可以检查 selection 是否为空?这是我现在的代码,如果我不 select JList 中的任何内容,它会抛出一个 NullPointerException。
if(categoriesList.getSelectedValue().equals("Bus")) {
BusSymbol bs = new BusSymbol(x, y);
mp.add(bs);
}
else if
(categoriesList.getSelectedValue().equals("Underground")) {
UndergroundSymbol us = new UndergroundSymbol(x,y);
mp.add(us);
}
else if (categoriesList.getSelectedValue().equals("Train")) {
TrainSymbol ts = new TrainSymbol(x,y);
mp.add(ts);
}
else if (categoriesList.getSelectedValue().equals(null)) {
NoCategorySymbol ncs = new NoCategorySymbol(x,y);
mp.add(ncs);
}
mp.validate();
mp.repaint();
您不能使用 .equals
检查空值,您需要使用 ==
。
categoriesList.getSelectedValue() == null
这是因为.equals
调用了对象的方法。如果对象为 null,则不能这样做。
您应该使用 JList.isSelectionEmpty()
作为条件,而不是针对可能是 null
.
的值进行测试
您应该先进行此测试,and/or 更改所有其他具有这种不幸语法的测试:
mightBeNull.equals(neverNull)
作为一般规则,通常最好避免使用此语法并改用 neverNull.equals(mightBeNull)
,因为它避免尝试调用不存在的 null.equals()
方法。
我提出以下代码:
if (categoriesList.isSelectionEmpty()) {
mp.add(new NoCategorySymbol(x,y));
} else {
// here we know categoriesList.getSelectedValue() isn't null
String selectedValue = categoriesList.getSelectedValue());
if ("Underground".equals(selectedValue)) {
mp.add(new UndergroundSymbol(x,y));
} else if ("Train".equals(selectedValue)) {
mp.add(new TrainSymbol(x, y));
}
}
mp.validate();
mp.repaint();
public boolean isElementSelected(){ return categoriesList.getSelectedValue() == null;}
我正在编写一个程序,根据用户 select 在 JList 中的内容在图像上绘制不同的符号。这工作正常,但我的问题是如果 JList 中也没有 selected,我想在图像上放置一个符号。有什么方法可以检查 selection 是否为空?这是我现在的代码,如果我不 select JList 中的任何内容,它会抛出一个 NullPointerException。
if(categoriesList.getSelectedValue().equals("Bus")) {
BusSymbol bs = new BusSymbol(x, y);
mp.add(bs);
}
else if
(categoriesList.getSelectedValue().equals("Underground")) {
UndergroundSymbol us = new UndergroundSymbol(x,y);
mp.add(us);
}
else if (categoriesList.getSelectedValue().equals("Train")) {
TrainSymbol ts = new TrainSymbol(x,y);
mp.add(ts);
}
else if (categoriesList.getSelectedValue().equals(null)) {
NoCategorySymbol ncs = new NoCategorySymbol(x,y);
mp.add(ncs);
}
mp.validate();
mp.repaint();
您不能使用 .equals
检查空值,您需要使用 ==
。
categoriesList.getSelectedValue() == null
这是因为.equals
调用了对象的方法。如果对象为 null,则不能这样做。
您应该使用 JList.isSelectionEmpty()
作为条件,而不是针对可能是 null
.
您应该先进行此测试,and/or 更改所有其他具有这种不幸语法的测试:
mightBeNull.equals(neverNull)
作为一般规则,通常最好避免使用此语法并改用 neverNull.equals(mightBeNull)
,因为它避免尝试调用不存在的 null.equals()
方法。
我提出以下代码:
if (categoriesList.isSelectionEmpty()) {
mp.add(new NoCategorySymbol(x,y));
} else {
// here we know categoriesList.getSelectedValue() isn't null
String selectedValue = categoriesList.getSelectedValue());
if ("Underground".equals(selectedValue)) {
mp.add(new UndergroundSymbol(x,y));
} else if ("Train".equals(selectedValue)) {
mp.add(new TrainSymbol(x, y));
}
}
mp.validate();
mp.repaint();
public boolean isElementSelected(){ return categoriesList.getSelectedValue() == null;}