我想这样做
如果单元格位置发生变化,序列号将在更改位置时自行顺序重新排序。我们可以在更改单元格位置时...序列中没有列会自行重新排序..在TABLEVIEW < / p>
例如..假设der为五行( Fieldname :F1为 Sr.no :1,F2为2,F3为3,F4为4, F5为5)如果f1在单击向下按钮时移动到第二位,则f1 srno将变为2,并且在移动单元格后f2将动态为1 ..
或者如果f5在点击向上按钮时移动到向上位置,那么f5的srno将变为4并且f4 srno将变为5 ..
请为我提供一个逻辑吗?
我的代码:
ReadOnlyIntegerProperty selectedIndex = tableupdateSpacee.getSelectionModel().selectedIndexProperty();
upaction.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent evt) {
int index = tableupdateSpacee.getSelectionModel().getSelectedIndex();
// swap items
tableupdateSpacee.getItems().add(index-1, tableupdateSpacee.getItems().remove(index));
// select item at new position
tableupdateSpacee.getSelectionModel().clearAndSelect(index-1);
int a=colFieldSrno.getCellData(index);
colFieldSrno.setCellValueFactory(new PropertyValueFactory<>("srno"));
System.out.println("col serial number"+colFieldSrno.getCellData(index));
// tableupdateSpacee.getColumns().add(colFieldSrno.getCellData(index));
tableupdateSpacee.setItems(modelUpdateSpace);
tableupdateSpacee.refresh();
}
});
downaction.setOnAction(evt -> {
int index = tableupdateSpacee.getSelectionModel().getSelectedIndex();
// swap items
tableupdateSpacee.getItems().add(index+1, tableupdateSpacee.getItems().remove(index));
// select item at new position
tableupdateSpacee.getSelectionModel().clearAndSelect(index+1);
tableupdateSpacee.refresh();
});
答案 0 :(得分:1)
您可以在表模型中完全没有srNo
属性的情况下执行此操作。只是做:
TableColumn<S,Void> colFieldSrno = new TableColumn<>("Sr.No");
colFieldSrNo.setCellFactory(tc -> new TableCell<S,Void>() {
@Override
public void updateIndex(int index) {
super.updateIndex(index);
if (index < 0 || index >= tableupdateSpacee.getItems().size()) {
setText(null);
} else {
setText(Integer.toString(index+1));
}
}
});
(这里您需要将S
替换为您用作表格模型的任何类别。完全删除列的cellValueFactory
(值基本上是索引,它不是表模型的一部分),并从表模型中删除srNo
属性。
如果由于其他原因需要srNo
属性(虽然你根本不需要它),那么你只需要在交换值时更新它:
upaction.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent evt) {
int index = tableupdateSpacee.getSelectionModel().getSelectedIndex();
// swap items
S item = tableupdateSpacee.getItems().get(index);
S previousItem = tableUpdateSpacee.getItems().get(index - 1);
previousItem.setSrNo(index);
item.setSrNo(index-1);
tableupdateSpacee.getItems().remove(index);
tableupdateSpacee.getItems().add(index-1, item);
// select item at new position
tableupdateSpacee.getSelectionModel().clearAndSelect(index-1);
}
});
,同样适用于downaction
。