java - 编辑 JavaFX 表中的数据
问题描述
我仍在学习 Java 和 JavaFX,我已经知道如何读取包含原始数据的 CSV 文件并将其输入到我的表中。我的问题是如何允许用户编辑/更新/删除单元格并保存以反映更新?任何帮助将不胜感激。
主.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 文件。
解决方案
推荐阅读
- kubernetes - 如何远程调试托管在 Azure K8s 集群中的应用程序
- mysql - 如何查看单列数据
- vue.js - 在 Vue JS 组件中动态添加和删除 div
- python - 我无法理解 python 是关键字它不一致吗?
- docker - 如何将带有 --config 选项的 docker run 应用于 docker compose
- javascript - 即使数据为空,也会输入 if(!data) 块
- autodesk-forge - Forge API:无法从我的 BIM360 团队获取所有项目
- php - 在产品页面的 WooCommerce 过滤器中添加属性名称作为类
- r - R中的重新编码变量返回无效
- react-native - React-Native:使用 diffClamp 和多个滑块时,滑块旋钮跳到随机位置