如何解决TableView:填充可编辑的 TextField 容器
经过数小时的阅读和尝试,我一直在努力在 TableView 中填充可编辑的 TextField 容器。
我已经设法将自定义对象的 ObservableList 中的数据显示到我的 TableView 实例中。
我已经尝试过这个命令:
spalteTag.setCellFactory(TextFieldTableCell.forTableColumn(spalteTag));
spalteIstErledigt.setCellFactory(CheckBoxTableCell.forTableColumn(spalteIstErledigt));
工作正常。
package sample;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.control.cell.CheckBoxTableCell;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.util.converter.NumberStringConverter;
import tabellen.MysqLController;
import tabellen.TabelleKabelzug;
public class mainController {
ObservableList<TabelleKabelzug> oListeKabelzug = FXCollections.observableArrayList();
@FXML
private TableView tableViewKabelzug = new TableView();
@FXML
private TableColumn<TabelleKabelzug,Integer> spalteId = new TableColumn();
@FXML
private TableColumn<TabelleKabelzug,Boolean> spalteIstErledigt = new TableColumn();
@FXML
private TableColumn<TabelleKabelzug,String> spalteTag = new TableColumn();
public void initialize() {
initialisiereKabelzugliste();
tableViewKabelzug.setItems(oListeKabelzug);
}
public void initialisiereKabelzugliste() {
MysqLController controller = new MysqLController();
controller.mitMysqLVerbinden();
oListeKabelzug.setAll(controller.kabelzuglisteLaden());
spalteIstErledigt.setCellFactory(CheckBoxTableCell.forTableColumn(spalteIstErledigt));
spalteTag.setCellFactory(TextFieldTableCell.forTableColumn(spalteTag));
tableViewKabelzug.setItems(oListeKabelzug);
}
}
我的 .fxml 文件中的 TableColumn“spalteTag”示例:
<TableColumn fx:id="spalteTag" text="BMK">
<cellValueFactory>
<PropertyValueFactory property="tag" />
</cellValueFactory>
<cellFactory>
??? <-- Any code in here possible?
</cellFactory>
</TableColumn>
这是目前的示例(当然没有任何错误): TableView with populated data and Checkboxes
所以我现在的 3 个问题是: 首先,如何在专用于 String 值的每个 TableView 单元格中添加 TextFields? 其次,如何使每个 TableView 单元格的这些 TextField 都可编辑? 第三,在我的 .fxml 文件中是否有任何可能的设置? (这对我来说是最方便的解决方案)
来自德国的问候:)
解决方法
您不必将参数传递给 forTableColumn 函数。 试试这个
spalteTag.setCellFactory(TextFieldTableCell.forTableColumn());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。