TableView,设置可编辑单元格

编程入门 行业动态 更新时间:2024-10-28 10:28:01
本文介绍了TableView,设置可编辑单元格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我尝试使表格单元格可编辑.我设法用两个具有String值的Collumns来做到这一点,但是我不能用代表Integer值的列来做到这一点.

I try to make Table cells editable. I managed to do this with two Collumns that have String values in it, but I cant make this with columns that represent Integer values.

带有X的地方是编译器得到错误的地方:

Places with X is where compiler get the error:

The method setCellFactory(Callback<TableColumn<DataModel,Integer>,TableCell<DataModel,Integer>>) in the type TableColumn<DataModel,Integer> is not applicable for the arguments (Callback<TableColumn<DataModel,String>,TableCell<DataModel,String>>)

编译器得到错误的地方是XX:

and places with XX is where compiler get the error:

The method setOnEditCommit(EventHandler<TableColumn.CellEditEvent<DataModel,Integer>>) in the type TableColumn<DataModel,Integer> is not applicable for the arguments ((CellEditEvent<DataModel, Integer> event) -> {})

此处提供代码:

public void initialize(URL location, ResourceBundle resources) { //Tworzymy sobie kolumny, które będą odpowiadać oraz przyjmować konretne dane TableColumn<DataModel, String> nameColumn = new TableColumn<DataModel, String>("Name"); nameColumn.setMinWidth(100); TableColumn<DataModel, String> surnameColumn = new TableColumn<DataModel, String>("Surname"); surnameColumn.setMinWidth(100); TableColumn<DataModel, Integer> ageColumn = new TableColumn<DataModel, Integer>("Age"); ageColumn.setMinWidth(100); TableColumn<DataModel, Integer> telNumberColumn = new TableColumn<DataModel, Integer>("Tel. Number"); telNumberColumn.setMinWidth(100); //dodajemy kolumny do okna tableView.getColumns().addAll(nameColumn,surnameColumn,ageColumn,telNumberColumn); //podajemy nazwy zmiennych, których wartości mają się wyświetlać w poszczególnych kolumnach nameColumn.setCellValueFactory(new PropertyValueFactory<>("sName")); surnameColumn.setCellValueFactory(new PropertyValueFactory<>("sSurname")); ageColumn.setCellValueFactory(new PropertyValueFactory<>("iAge")); telNumberColumn.setCellValueFactory(new PropertyValueFactory<>("iPhoneNumber")); //Sprawiamy że poszczególne kolumny stają się edytowalne nameColumn.setCellFactory(TextFieldTableCell.<DataModel>forTableColumn()); nameColumn.setOnEditCommit((CellEditEvent<DataModel, String> event) -> { ((DataModel) event.getTableView().getItems(). get(event.getTablePosition().getRow())). setsName(event.getNewValue()); }); surnameColumn.setCellFactory(TextFieldTableCell.<DataModel>forTableColumn()); surnameColumn.setOnEditCommit((CellEditEvent<DataModel, String> event) -> { ((DataModel) event.getTableView().getItems(). get(event.getTablePosition().getRow())). setsSurname(event.getNewValue()); }); X ageColumn.setCellFactory(TextFieldTableCell.<DataModel>forTableColumn()); XX ageColumn.setOnEditCommit((CellEditEvent<DataModel, Integer> event) -> { // ((DataModel) event.getTableView().getItems(). get(event.getTablePosition().getRow())). setiAge(Integer.valueOf(event.getNewValue())); }); X telNumberColumn.setCellFactory(TextFieldTableCell.<DataModel>forTableColumn()); XX telNumberColumn.setOnEditCommit((CellEditEvent<DataModel, Integer> event) -> { // ((DataModel) event.getTableView().getItems(). get(event.getTablePosition().getRow())). setiPhoneNumber(Integer.valueOf(event.getNewValue())); }); tableView.setPlaceholder(new Label("Pust tabelka!"));//jaki element dodać jeśli tabelka nie jest wyświetlona tableView.setEditable(true); tableView.setItems(dataList); //wczytujemy dane do przygotowanej tabelki buttAdd.setOnAction((ActionEvent e) -> { buttAddAction(e); }); }

我正在学习oracle TableView教程,这相当困难.帮助.

Im taking oracle TableView tutorial, and its quite difficult. Help.

推荐答案

问题是TextFieldTableCell.forTableColumn()被键入为字符串值.请参阅默认实现:

The issue is that TextFieldTableCell.forTableColumn() is typed to a String value. See the default implementation:

public static <S> Callback<TableColumn<S,String>, TableCell<S,String>> forTableColumn() { return forTableColumn(new DefaultStringConverter()); }

您需要的是TextFieldTableCell和 IntegerStringConverter ,例如:

What you need is the TextFieldTableCell with an IntegerStringConverter, for example:

ageColumn.setCellFactory(TextFieldTableCell.<DataModel, Integer>forTableColumn(new IntegerStringConverter()));

更多推荐

TableView,设置可编辑单元格

本文发布于:2023-11-23 02:25:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1619744.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单元格   编辑   TableView

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!