我有一个JTable
和一个应该控制程序对各种动作的响应的类,我写的第一个是单元格更改事件。
每行都是从Part
对象生成的,每列的列类都是相应设置的。
Part(String partName, String make, String partNumber,
String altPartNumber, Double price, Integer quantity,
String description, Boolean isAutomotive, Boolean isMarine,
Boolean isIndustrial)
{
//...code not shown...
}
零件对象存储在可序列化的ArrayList<Part>
。
基本上,事件处理代码需要做的是使用从ArrayList
获得的更新数据更新此JTable
中特定部件对象的参数值。
下面的代码演示了我想如何做到这一点;这里出现标题中提到的错误。任何人都可以解释如何处理这个问题吗?
public class EventController extends UI implements TableModelListener
{
// Declarations:
private int row;
private int column;
private Part partToChange;
// ...Omitted for brevity...
private String updatedName;
private String updatedMake;
private Integer updatedQuantity;
// Don't need declarations for the booleans, can just toggle them.
@Override
public void tableChanged(TableModelEvent e)
{
// Find out where the change took place...
this.column = e.getColumn();
this.row = e.getFirstRow();
// Get the new value...
// Send the new value to parts...
partToChange = data.getPart(row);
switch(column)
{
case 0:
updatedName = getTableModel().getValueAt(row, column);
// ERROR OCCURS HERE ^
partToChange.setName(updatedName);
}
}
}
答案 0 :(得分:3)
你的getTableModel().getValueAt(row, column);
返回一个Object引用而不是String,但是你将它分配给一个String变量。您的选择包括:
toString()
。如果它不是String,则不会出现异常,但返回的String可能不是您想要使用的。但是,如果变量为null,则会出现问题,如果不首先检查null,则存在NullPointerException的风险。我建议你走这条路。 String.valueOf()
可以避免toString()
的空例外问题。谢谢理查德!