Редактирование данных в таблице JavaFX - PullRequest
0 голосов
/ 28 апреля 2020

Я все еще изучаю 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 с обновленными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...