【发布时间】:2015-01-06 11:22:59
【问题描述】:
每行包含三个具有 RGB 值的单元格。我使用这些 RGB 值来设置同一行中另一个单元格的背景。在需要为背景着色的单元格上,我有一个回调,可以获取 RGB 值并完美地设置背景。所以整个TableView 看起来完全符合我的需要。我有一个颜色选择器,这个选择器需要更新包含三个 RGB 值的选定行。我能够设置新的三个 RGB 值,但我还需要具有彩色背景的单元格将自身更新为新的 RGB 值。在下面的代码中,我找到了一种方法来做到这一点,但我相信这相当难看。
@FXML void handleColorPicker(ActionEvent event)
{
int r = (int) (comColorPicker.getValue().getRed()*255);
int g = (int) (comColorPicker.getValue().getGreen()*255);
int b = (int) (comColorPicker.getValue().getBlue()*255);
ComTableView.getSelectionModel().getSelectedItem().setRCom(r);
ComTableView.getSelectionModel().getSelectedItem().setGCom(g);
ComTableView.getSelectionModel().getSelectedItem().setBCom(b);
// we need to kick the cell value so it updates also the background color so we clear and rewrite the text string
String currentName = ComTableView.getSelectionModel().getSelectedItem().getCommodityName();
ComTableView.getSelectionModel().getSelectedItem().setCommodityName(" ");
ComTableView.getSelectionModel().getSelectedItem().setCommodityName(currentName);
}
上面代码的最后三行触发了单元格的updateItem,但我认为我这样做的方式很丑陋。我想知道,有没有更好的方法呢?
【问题讨论】:
标签: java user-interface javafx tableview