JavaFX:如何在没有侦听器的情况下在表格单元中包装文本?

时间:2019-07-03 11:07:26

标签: java javafx tableview tablecell

当前,我使用侦听器将文本换行到表单元格上,但这在加载/重新加载数据表时会引起一些延迟。还有其他方法可以不使用侦听器吗?

TableColumn<Peticion, Void> colObs = new TableColumn<>("Observaciones");               
        colObs.setPrefWidth(200);
        colObs.getStyleClass().add("columData");
        colObs.setCellFactory(col->{            
            TableCell<Peticion, Void> cell = new TableCell<Peticion, Void>(){
                    public void updateItem(Void item, boolean empty) {
                        super.updateItem(item, empty);
                        if (empty) {
                            setGraphic(null);
                        } else {
                            Peticion p = getTableView().getItems().get(getIndex());  

                            Label l = new Label(p.getObservaciones());
                            l.setWrapText(true);
                            VBox box = new VBox(l);
                            l.heightProperty().addListener((observable,oldValue,newValue)-> {
                                    box.setPrefHeight(newValue.doubleValue()+7);
                                    Platform.runLater(()->this.getTableRow().requestLayout());
                            });
                            super.setGraphic(box);
                            }
                    }       
            };
            return cell;
        });

0 个答案:

没有答案