2017-02-07 34 views
1

我目前使用JavaFX ColorPicker选择在我的应用程序的颜色。 TableView以外的那些按预期工作,但我遇到TableView中包含的问题。JavaFX的拾色器自定义颜色表格单元格

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

如何保持这种开放,直至自定义颜色值从该对话框承诺?

回答

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