我试图将字符串分配给2D对象列表,但每次都遇到NullPointerException。2D对象列表是自定义表模型类的数据源,该类将其提供给JTable。源是一个2D字符串列表,它只由数据对组成,但是这两部分都是需要打印的字符串,所以映射不适合。我遍历源列表并设置表数据列表的值。
public class CustomTableModel extends AbstractTableModel {
private List<List<Object>> tableData = new ArrayList<>();
public void setValues(List<List<String>> values) {
//Sanity Check
if (values == null) {
throw new IllegalArgumentException("Values cannot be null");
} else {
System.out.println("Got values in table model");
//Iterate through and set table data
int i = 0;
int j = 0;
for (List<String> l : values) {
for (String s : l) {
setValueAt(s, i, j);
j++;
}
i++;
//Reset to 0 as only 2 colums needed
j = 0;
}
}
}
再往下是setValueAt方法
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
System.out.println("Setting" + value + " at " + rowIndex + "," + columnIndex);
//This gives a NullPointerException
tableData.get(rowIndex).set(columnIndex, value);
//
fireTableCellUpdated(rowIndex, columnIndex);
}
中的所有值
tableData.get(rowIndex).set(columnIndex, value);
并且是非空的。
private ArrayList<ArrayList<Object>> tableData = new ArrayList<ArrayList<Object>>();
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
System.out.println("Setting" + value + " at " + rowIndex + "," + columnIndex);
//This causes IndexOutOfBoundsException
if(tableData.get(rowIndex) == null){
tableData.add(rowIndex, new ArrayList<>());
}else{
tableData.get(rowIndex).add(columnIndex, value);
//Called after both columns in a row are populated
fireTableCellUpdated(rowIndex, columnIndex);
}
}
那么,如果rowindex
、columnindex
和value
都清楚地设置了,那么tabledata
要么为null,要么从get
获得的内部list
为null。
您可以通过将语句分成几行来确定哪一个语句:
List<Object> row = tableData.get(rowIndex); //NPE means tableData is null
row.set(columnIndex, value); //NPE means inner List is null
我有以下列表,里面是另一个列表,然后是字符串列表 <代码>列表 示例 除了执行嵌套循环并最终替换列表之外,还有更好的方法吗?也许有溪流?
请建议更好的方法将路线转换为路线地图。
现在从接口获取回一个对象result,它的属性和data是一样的,我要怎么把reasult值赋值给data以达到响应式? 这种可以吗?还是要先解构,再赋值给data,或者是用...这种,或者Object.assign()这种?
我有两个对象列表,它们在两个列表中都有重复名称。我需要从清单2中删除清单1中的所有重复值。 下面是一个场景,类有名称变量,用这个变量需要检查清单1中的重复值并需要删除。 //这是具有3个对象的第一个列表 清单1大小为1 请建议我在Java8与流。
最近我遇到了一个问题,ArrayList中充满了对象 而每个 Item 对象都有自己的属性,如或整数。在我的图形界面中,我希望JComboBox仅填充 ArrayList中每个对象的名称值。 中的对象是在我的程序运行时添加的,它一开始没有值。将新项目添加到我的数组列表后,我调用 但这只给我一些类似的东西。有没有可能只显示ComboBox中ArrayList中每个项目的值?