【问题标题】:JavaFX Multiple cellValueFactories for one tableRow?一个tableRow的JavaFX多个cellValueFactories?
【发布时间】:2017-08-11 14:39:29
【问题描述】:

我还是 JavaFX 的新手,不太了解工厂的工作原理。

我想要做的既是根据 String 值对 tableColumn 中的 tableCell 应用样式,还要使单元格可编辑。

现在我的代码如下所示:

    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());

【问题讨论】:

  • 只需让您的自定义单元实现成为TextFieldTableCell 的子类,而不是TableCell 的子类。
  • 你能说明我会怎么做吗?提前致谢!
  • 不太确定有什么需要澄清的?

标签: javafx tableview javafx-8


【解决方案1】:

以下应该有效:

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);
        }
    }
});

【讨论】:

  • 谢谢。这就是我要找的东西!
猜你喜欢
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 2019-11-06
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 2017-05-10
  • 1970-01-01
相关资源
最近更新 更多