각 행에는 RGB 값이있는 세 개의 셀이 있습니다. 이 RGB 값을 사용하여 같은 행에있는 다른 셀의 배경을 설정합니다. 배경색이 필요한 셀에는 RGB 값을 선택하고 배경을 완벽하게 설정하는 콜백이 있습니다. 따라서 전체 TableView
은 내가 필요한만큼 정확하게 보입니다. 컬러 피커가 있고이 피커는 세 개의 RGB 값이 포함 된 선택된 행을 업데이트해야합니다. 새로운 3 개의 RGB 값을 설정할 수는 있지만 색상이있는 셀을 사용하여 새로운 RGB 값으로 업데이트해야합니다. 아래의 코드에서이 작업을 수행하는 방법을 찾았지만 오히려 추한 것 같습니다. 값을 변경하지 않고 TableView의 CellValue 업데이트를 트리거하십시오.
@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
하지만 난 못생긴 방법으로이 일 것 같아 트리거합니다. 궁금한데, 더 좋은 방법이 있을까요?