JavaFX,TableView和setCellFactory

时间:2016-07-21 06:48:53

标签: java javafx tableview frontend

我试图更好地了解 JavaFX TableView的工作原理。 为了达到几个目标,我将尝试解释到目前为止我做了什么,为什么我这样做,以及我的问题是什么。

当然,我有一个TableView,由ObservableList填充。

Platform.runLater(()->ObservableList.add(0, myObject));

表格由我的 FXML文件中定义的2列组成,其中我也有:

<cellValueFactory><PropertyValueFactory property="column1" /></cellValueFactory>
<cellValueFactory><PropertyValueFactory property="column2" /></cellValueFactory>
当然,

MyObject类具有这两个属性,并且列自动填充。我遇到的第一个问题是关于第二列中的字符串(它们太长了)。这就是我在Controller类中添加的原因:

@Override
public void initialize(URL location, ResourceBundle resources) {
    setCellFactory();
}

private void setCellFactory() {
    secondColumn.setCellFactory(new Callback<TableColumn, TableCell>() {

        @Override
        public TableCell call(TableColumn param) {
            TableCell cell = new TableCell<>();
            Text text = new Text();
            cell.setGraphic(text);
            cell.setPrefHeight(Control.USE_COMPUTED_SIZE);
            text.wrappingWidthProperty().bind(secondColumn.widthProperty());
            text.textProperty().bind(cell.itemProperty());
            text.setFill(Color.WHITE);
            return cell;
        }
    });
}

通过这种方式,我解决了包装文本的问题,但是,现在,我想达到另一个目标,我真的找不到网络上的任何帮助。

  1. 对于表顶部的每个新条目,我想比较字符串以找出它们之间的差异(我已经找到了一个库来做),但我不知道如何找到一个获得第二列当前值的好方法。

  2. 我必须强调表格中旧字符串的差异。所以,我想我必须更新所有旧单元格。怎么样?

  3. 突出显示。怎么做?我读过它是唯一可能的,如果我在同一个HBox中插入几个String或类似的东西。有没有办法在桌子上做到这一点?

0 个答案:

没有答案