我有以下代码,我想要实现的是允许用户双击由模型填充的表中的单元格,允许用户编辑特定的单元格,点击将其输入并更新到单元/模型。
我想要什么:
当前代码问题: 双击单元格时当前的CValidatingTextField不会显示所选单元格的值。如果我要在第1行的纬度单元格中键入值“ 123”,如果我要选择第2行或第3行的纬度单元格,它也在文本字段中显示123。
问题:是否可以修改此代码以实现我想要的?还是有一种更简单的方法来检测单元格编辑事件?我已经看到了set / getValueAt的示例,但是我不确定如何将其合并到我的代码中以实现所需的功能。这听起来像是一个简单的问题,但我不确定如何解决。
private void setPointTableCellEditors(){
JXTable pTable = pointTableModelHandler.getGenericTablePanel().getGenericTable();
int colCount = pTable.getColumnModel().getColumnCount();
for (int i = 0; i < colCount; ++i){
TableColumn col = pTable.getColumnModel().getColumn(i);
String headerText = col.getHeaderValue().toString();
if (headerText.equalsIgnoreCase("latitude"){
final CValidatingTextField latTextField = new CValidatingTextField();
latTextField.addValidators(new NumericValidator<>(0, Integer.MAX_VALUE, 0, Integer.class));
DefaultCellEditor defaultCellEditor2 = new DefaultCellEditor(latTextField);
col.setDefaultCellEditor(defaultCellEditor2);
defaultCellEditor2.addCellEditorListener(new CellEditorListener(){
@Override
public void editingStopped(ChangeEvent e){
String latInput = latTextField.getText();
//From here i can do whatever i wish with the new value
}
@Override
public void editingCanceled(ChangeEvent e){
}
}
}else if(headerText.equalsIgnoreCase("longitude"){
}
}
}