gpt4 book ai didi

javafx-2 - 如何在JAVAFX中使用带有动态列的动态TableView编辑数据

转载 作者:行者123 更新时间:2023-12-02 19:07:46 24 4
gpt4 key购买 nike

今天这个演示在 JavaFX 2.0 的 tableView 上显示DAT 文件的 CSV 数据,无需创建自定义类。我将此 TableView 称为动态 TableView,因为 tableview 自动管理列和行。
根据我对 tableView 上可编辑性的研究,我们必须有一个自定义类并将其实现到 tableView 以显示为此演示 ==> http://docs.oracle.com/javafx/2/ui_controls/table-view.htm

但在这种情况下我不能这样做,因为我们不知道有多少列示例带有 csv 文件或 .dat 文件....我想在这种情况下在此 tableView 上进行编辑 通过将 TextField 添加到 TableCell 中。如果不制作自定义类,它会如何做(因为您不知道有多少列...),如果它必须制作自定义类,那么针对这种情况的自定义类的设计怎么样

你能帮我一下吗?

    private void getDataDetailWithDynamic() {
tblView.getItems().clear();
tblView.getColumns().clear();
tblView.setPlaceholder(new Label("Loading..."));
// @Override



try {
File aFile = new File(txtFilePath.getText());
InputStream is = new BufferedInputStream(new FileInputStream(aFile));
Reader reader = new InputStreamReader(is, "UTF-8");

BufferedReader in = new BufferedReader(reader);

final String headerLine = in.readLine();
final String[] headerValues = headerLine.split("\t");
for (int column = 0; column < headerValues.length; column++) {
tblView.getColumns().add(
createColumn(column, headerValues[column]));
}

// Data:

String dataLine;
while ((dataLine = in.readLine()) != null) {
final String[] dataValues = dataLine.split("\t");
// Add additional columns if necessary:
for (int columnIndex = tblView.getColumns().size(); columnIndex < dataValues.length; columnIndex++) {
tblView.getColumns().add(createColumn(columnIndex, ""));
}
// Add data to table:
ObservableList<StringProperty> data = FXCollections
.observableArrayList();
for (String value : dataValues) {
data.add(new SimpleStringProperty(value));
}
tblView.getItems().add(data);
}
} catch (Exception ex) {
System.out.println("ex: " + ex.toString());
}


for(int i=0; i<tblView.getColumns().size(); i++) {
TableColumn col = (TableColumn)tblView.getColumns().get(i);
col.setPrefWidth(70);
}
}

private TableColumn createColumn(
final int columnIndex, String columnTitle) {
TableColumn column = new TableColumn(DefaultVars.BLANK_CHARACTER);
String title;
if (columnTitle == null || columnTitle.trim().length() == 0) {
title = "Column " + (columnIndex + 1);
} else {
title = columnTitle;
}


Callback<TableColumn, TableCell> cellFactory = new Callback<TableColumn, TableCell>() {
@Override
public TableCell call(TableColumn p) {

System.out.println("event cell");
EditingCellData cellExtend = new EditingCellData();
return cellExtend;
}
};

column.setText(title);
column.setCellValueFactory(cellFactory);
return column;
}

感谢您的阅读。

最佳答案

这是解决这个问题的最好方法==> https://forums.oracle.com/message/11216643#11216643

非常感谢您阅读本文。

谢谢

关于javafx-2 - 如何在JAVAFX中使用带有动态列的动态TableView编辑数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19142896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com