首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用JavaFX TableColumn

禁用JavaFX TableColumn
EN

Stack Overflow用户
提问于 2018-03-11 07:01:59
回答 1查看 438关注 0票数 0

TableColumn定义为TableColumn<Target, String> tableColumnLocation;,并按如下方式填充:

代码语言:javascript
复制
tableColumnLocation.setCellValueFactory(new 
PropertyValueFactory<Target, String>("name"));

tableColumnLocation.setCellFactory(ComboBoxTableCell.forTableColumn(locationValues));

其中locationValues是从数据库中读取的一组字符串。我试图禁用tableColumnLocation下拉列表,以防另一个复选框列被取消选中。所以问题是如何禁用ComboBoxTableCell。如有任何建议,将不胜感激。

已经能够禁用如下所示的其他TableColumn,但不确定如何继续执行此操作。

代码语言:javascript
复制
tableColumnQty.setCellFactory(
                     new Callback<TableColumn<Test, String>, TableCell<Test, String>>() {

                         @Override
                         public TableCell<Test, String> call(TableColumn<Test, String> paramTableColumn) {
                             return new TextFieldTableCell<Test, String>(new DefaultStringConverter()) {
                                 @Override
                                 public void updateItem(String s, boolean b) {
                                     super.updateItem(s, b);
                                     if(!isEmpty()) {
                                         Test item = getTableView().getItems().get(getIndex());
                                         if (item.getTarget().equalsIgnoreCase("0")) {
                                             setDisable(true);
                                             setEditable(false);
                                             this.setStyle("-fx-background-color: lightgrey");
                                         } else {
                                             setDisable(false);
                                             setEditable(true);
                                             //if(s != null && !s.equalsIgnoreCase(""))

                                             setStyle("");
                                         }
                                     }
                                 }
                             };
                         }

                     });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-13 22:40:24

这里是你所需要的:

代码语言:javascript
复制
tableColumnLocation.setCellFactory(
                     new Callback<TableColumn<Target, String>, TableCell<Target, String>>() {

                         @Override
                         public TableCell<Target, String> call(TableColumn<Target, String> paramTableColumn) {
                             return new ComboBoxTableCell<Target, String>(new DefaultStringConverter(), locationValues) {
                                 @Override
                                 public void updateItem(String s, boolean b) {
                                     super.updateItem(s, b);
                                     if(!isEmpty()) {
                                         Target item = getTableView().getItems().get(getIndex());
                                         if (check if checkbox is unselected) {
                                             setDisable(true);
                                             setEditable(false);
                                             this.setStyle("-fx-background-color: lightgrey");
                                         } else {
                                             setDisable(false);
                                             setEditable(true);
                                             setStyle("");
                                         }
                                     }
                                 }
                             };
                         }

                     });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49217524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档