JavaFX一个tableRow的多个cellValueFactories?

时间:2017-08-11 14:39:29

标签: javafx tableview javafx-8

我仍然对JavaFX很新,并且不太了解工厂是如何工作的。

我要做的是将样式应用于tableColumn中的tableCell,具体取决于String的值,并使单元格可编辑。

现在我的代码看起来像这样:

    notesColumn.setCellFactory(column -> new TableCell<Computer, String>() {
        @Override
        protected void updateItem(String item, boolean empty) {
            super.updateItem(item, empty);
            if (item == null | empty)
            {
                setText(null);
                setStyle("");
            }
            else
            {
                setText(item);
                if (item.contains("Restoring @")) setTextFill(Color.CRIMSON);
                else if (item.contains("Ready")) setTextFill(Color.FORESTGREEN);
                else setTextFill(Color.BLACK);
            }
        }
    });

这部分按照我的意愿工作,但如果我尝试使用下面的代码使单元格可编辑,那么当然,cellFactories会相互覆盖。我如何将两者合并?

 notesColumn.setCellFactory(TextFieldTableCell.forTableColumn());

1 个答案:

答案 0 :(得分:0)

以下内容应该有效:

notesColumn.setCellFactory(column -> new TextFieldTableCell<Computer, String>(new DefaultStringConverter()) {
    @Override
    public void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);
        if (item == null | empty)
        {
            setStyle("");
        }
        else
        {
            if (item.contains("Restoring @")) setTextFill(Color.CRIMSON);
            else if (item.contains("Ready")) setTextFill(Color.FORESTGREEN);
            else setTextFill(Color.BLACK);
        }
    }
});