Я все еще изучаю Java и JavaFX, я выяснил, как читать CSV-файл, содержащий необработанные данные, и вводить их в мою таблицу. У меня вопрос, как я могу позволить пользователю редактировать / обновлять / удалять ячейки и сохранять, чтобы отразить обновление? Любая помощь будет принята с благодарностью.
Main. java
public class Main extends Application {
private final TableView<Asset> tableView = new TableView<>();
private final ObservableList<Asset> dataList = FXCollections.observableArrayList();
private void readCSV() {
String csvFile = "assets.csv";
String FieldDelimiter = ",";
BufferedReader br;
try {
br = new BufferedReader(new FileReader(csvFile));
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(FieldDelimiter, -1);
Asset assets = new Asset(fields[0], fields[1], fields[2],
fields[3], fields[4], fields[5]);
dataList.add(assets);
}
} catch (IOException ex) {
Logger.getLogger(Main.class.getName())
.log(Level.SEVERE, null, ex);
}
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Asset Management System");
tableView.setEditable(true);
Group root = new Group();
TableColumn columnF1 = new TableColumn("AssetIDNumber");
columnF1.setCellValueFactory(new PropertyValueFactory<>("f1"));
TableColumn columnF2 = new TableColumn("AssetName");
columnF2.setCellValueFactory(new PropertyValueFactory<>("f2"));
TableColumn columnF3 = new TableColumn("AssetType");
columnF3.setCellValueFactory(new PropertyValueFactory<>("f3"));
TableColumn columnF4 = new TableColumn("AssetLocation");
columnF4.setCellValueFactory(new PropertyValueFactory<>("f4"));
TableColumn columnF5 = new TableColumn("UsedBy");
columnF5.setCellValueFactory(new PropertyValueFactory<>("f5"));
TableColumn columnF6 = new TableColumn("AssetState");
columnF6.setCellValueFactory(new PropertyValueFactory<>("f6"));
tableView.setItems(dataList);
tableView.getColumns().addAll(columnF1, columnF2, columnF3, columnF4, columnF5, columnF6);
VBox vBox = new VBox();
vBox.setSpacing(10);
vBox.getChildren().add(tableView);
root.getChildren().add(vBox);
primaryStage.setScene(new Scene(root, 482, 250));
primaryStage.show();
readCSV();
}
public static void main(String[] args) {
launch(args);
}
}
Актив. java
public class Asset {
private SimpleStringProperty f1, f2, f3, f4, f5, f6;
Asset(String f1, String f2, String f3, String f4,
String f5, String f6) {
this.f1 = new SimpleStringProperty(f1);
this.f2 = new SimpleStringProperty(f2);
this.f3 = new SimpleStringProperty(f3);
this.f4 = new SimpleStringProperty(f4);
this.f5 = new SimpleStringProperty(f5);
this.f6 = new SimpleStringProperty(f6);
}
public String getF1() {
return f1.get();
}
public String getF2() {
return f2.get();
}
public String getF3() {
return f3.get();
}
public String getF4() {
return f4.get();
}
public String getF5() {
return f5.get();
}
public String getF6() {
return f6.get();
}
}
Опять пытаюсь разрешить Пользователь может вносить изменения в таблицу и сохранять изменения, поскольку в конечном итоге мне потребуется выполнить обратную запись в файл CSV с обновленными данными.