【问题标题】:JavaFX Color Picker Custom Color In Table CellJavaFX颜色选择器在表格单元格中自定义颜色
【发布时间】:2017-06-25 05:05:10
【问题描述】:
我目前正在使用 JavaFX ColorPicker 在我的应用程序中选择颜色。 TableView 之外的那些按预期工作,但我遇到了TableView 中包含的问题。
我目前正在使用solution found at Michael Simons's site 在TableCell 中实现自定义控件。它工作正常...直到您打开拾色器的Custom Color 对话框。此时,与自定义颜色对话框的任何交互都会关闭并提交编辑,这意味着您无法例如为特定颜色使用键入 RGB 代码。
在从该对话框提交自定义颜色值之前,如何保持打开状态?
【问题讨论】:
标签:
java
user-interface
javafx
colors
tableview
【解决方案1】:
找到解决方案;希望它可以帮助其他人搜索:
原始解决方案使用更改侦听器来提交已编辑的表格单元格:
this.colorPicker.valueProperty().addListener((observable, oldValue, newValue) -> {
if(isEditing()) {
commitEdit(newValue);
}
});
但是,ColorPicker 自定义颜色窗口会在您拖动滑块或目标时持续更新值。结果,当您第一次单击时,侦听器会触发,而您最终会退出对话框。
将此更改为针对isHiding 事件的事件侦听器可解决此问题。当您在自定义颜色窗口中单击 [保存] 或 [使用] 选择预设颜色或时,ColorPicker 会隐藏。用这个替换上面的 sn-p,你就可以开始了!
this.colorPicker.setOnHiding(event -> {
if (isEditing()) {
commitEdit(this.colorPicker.getValue());
}
});