我试图更好地了解 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;
}
});
}
通过这种方式,我解决了包装文本的问题,但是,现在,我想达到另一个目标,我真的找不到网络上的任何帮助。
对于表顶部的每个新条目,我想比较字符串以找出它们之间的差异(我已经找到了一个库来做),但我不知道如何找到一个获得第二列当前值的好方法。
我必须强调表格中旧字符串的差异。所以,我想我必须更新所有旧单元格。怎么样?
突出显示。怎么做?我读过它是唯一可能的,如果我在同一个HBox中插入几个String或类似的东西。有没有办法在桌子上做到这一点?