【发布时间】:2019-01-24 04:29:48
【问题描述】:
有人可以向我解释为什么我在 getRowCount() 方法中得到 NullPointerException 吗?变量用空的 ArrayList 初始化...
public class BeschriftungssetTableModel extends DefaultTableModel {
private static final long serialVersionUID = -4980235976337188354L;
private List<BeschriftungssetBean> data = new ArrayList<>();
public void setData(List<BeschriftungssetBean> data) {
this.data = data;
}
@Override
public int getColumnCount() {
return 1;
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public Object getValueAt(int row, int column) {
return data.get(row).getBezeichnung();
}
@Override
public String getColumnName(int column) {
return "Bezeichnung";
}
public static void main(String[] args) {
BeschriftungssetTableModel beschriftungssetTableModel = new BeschriftungssetTableModel();
beschriftungssetTableModel.getRowCount();
}
}
public class BeschriftungssetBean {
private String objId;
private String bezeichnung;
public String getBezeichnung() {
return bezeichnung;
}
public void setBezeichnung(String bezeichnung) {
this.bezeichnung = bezeichnung;
}
public String getObjId() {
return objId;
}
public void setObjId(String objId) {
this.objId = objId;
}
}
Exception in thread "main" java.lang.NullPointerException
at ch.aaa.xxx.yyy.gruppen.plugin.anzeige.beschriftungseinstellungen.BeschriftungssetTableModel.getRowCount(BeschriftungssetTableModel.java:36)
at javax.swing.table.DefaultTableModel.setDataVector(DefaultTableModel.java:224)
at javax.swing.table.DefaultTableModel.<init>(DefaultTableModel.java:124)
at javax.swing.table.DefaultTableModel.<init>(DefaultTableModel.java:106)
at javax.swing.table.DefaultTableModel.<init>(DefaultTableModel.java:86)
at ch.aaa.xxx.yyy.gruppen.plugin.anzeige.beschriftungseinstellungen.BeschriftungssetTableModel.<init>(BeschriftungssetTableModel.java:18)
at ch.aaa.xxx.yyy.gruppen.plugin.anzeige.beschriftungseinstellungen.BeschriftungssetTableModel.main(BeschriftungssetTableModel.java:50)
【问题讨论】:
-
你能添加
NullPointerException的堆栈跟踪吗? -
如果您的计划是用您自己的方法替换 DefaultTableModel 所做的一切,并使用您自己的列表而不是 DefaultTableModel 使用的数据,请实现 AbstractTableModel 而不是扩展 DefaultTableModel。
-
不相关:考虑不要在代码中混合语言。而且因为 BeschriftungsMengeBohne 听起来很糟糕,例如,我宁愿全英文
InscriptionSetBean。 -
我肯定会接受@JBNizet 的建议并扩展 AbstractTableModel
-
@GuntramBlohm 知道德语中存在的所有特殊术语已经足够复杂了......更不用说找到正确的翻译了......我们的项目绝对没有任何好处,因为说德语是要求