表格单元格中的JavaFX颜色选择器自定义颜色

时间:2017-02-07 19:42:45

标签: java user-interface javafx colors tableview

我目前正在使用JavaFX ColorPicker在我的应用程序中选择颜色。 TableView之外的工作符合预期,但我遇到TableView中包含的问题。

我目前正在使用solution found at Michael Simons's siteTableCell中实施自定义控件。它工作正常......直到您打开拾色器的Custom Color对话框。此时,与自定义颜色对话框的任何交互都将关闭并提交编辑,这意味着您无法作为示例键入RGB代码中的特定颜色用法。

在此对话框中提交自定义颜色值之前,如何保持此状态?

1 个答案:

答案 0 :(得分:0)

找到解决方案;希望它可以帮助其他人搜索:

原始解决方案使用更改侦听器提交已编辑的表格单元格:

this.colorPicker.valueProperty().addListener((observable, oldValue, newValue) -> {
    if(isEditing()) {
    commitEdit(newValue);
    }
});

但是,ColorPicker自定义颜色窗口连续会在您拖动滑块或目标时更新值。因此,第一次点击时,听众会激活,你最终会退出对话框。

将此更改为针对isHiding事件的事件侦听器可修复此问题。当您在自定义颜色窗口中点击 [保存] [使用] 时,选择预设颜色时隐藏ColorPicker 。用这个替换上面的代码片段,你很高兴!

this.colorPicker.setOnHiding(event -> {
    if (isEditing()) {
        commitEdit(this.colorPicker.getValue());
    }
});