java - JavaFX 中的 TableView : how to change a single cell's background color if a TableCellTextField is being used?

标签 java javafx tableview

我正在以下列的所有行中创建一个 TableCellTextField:

nameColumn.setCellFactory(TextFieldTableCell.forTableColumn());

我的目的是根据用户的输入更改已编辑单元格的背景颜色。

我找到了几种更改单个单元格背景颜色的解决方案,其中包括覆盖单元格工厂内的 updateItem() 方法。 Here就是一个例子。

但是,我不知道如何将该策略与通过 TextField 使单元格可编辑相结合。

最佳答案

您基本上可以使用 TextFieldTableCell 执行与使用常规 TableCell 相同的操作。请注意,与普通的 TableCell 不同,TextFieldTableCell 已经负责设置文本等。

所以你可以这样做,例如:

PseudoClass specialClass = PseudoClass.getPseudoClass("special");

nameColumn.setCellFactory(tc -> new TextFieldTableCell<MyType, String>(TextFormatter.IDENTITY_STRING_CONVERTER) {
    @Override
    public void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);
        boolean condition = /* depends on item and empty.... */
        pseudoClassStateChanged(specialClass, condition);
    }
});

然后在 CSS 文件中,只需定义单元格所需的样式即可。例如

.table-cell:special {
    -fx-background-color: yellow ;
}

关于java - JavaFX 中的 TableView : how to change a single cell's background color if a TableCellTextField is being used?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49370600/

相关文章:

java - 使用 servlet 更新文本字段

java - 我希望使用循环将我的变量 value3 添加 5 十次。但它只添加一次。如何解决这个问题?

java - 使用PHP、MySQL的Android登录注册系统出现错误 'java.lang.NoSuchMethodError: org.apache.http.impl.client.DefaultHttpClient.execute'

java - 在 Java : loop variable vs enhanced for statement 中迭代数组的最快方法

java - 如何为已在 java 中创建的新组件创建 FXML 文件而不是将其添加到场景构建器?

validation - ControlsFX 复杂验证

3D 空间中的 JavaFX 2D 形状

ios - 如何使用 Swift 删除 coredata 中的特定记录?

JavaFX 表格 View : Do I HAVE to wrap my fields in Simple<Object/Integer/String>Property?

ios - 将值从 UITableViewCell 传递到详细信息 View