여러 색상의 행 (낮은 우선 순위의 경우 color1, 중간 우선 순위의 경우 color2 등)으로 JavaFx TableView를 만들어야합니다. 나는JavaFX 테이블 뷰 색상
.priorityLow{ -fx-background-color: palegreen; }
.priorityMedium{ -fx-background-color: skyblue;}
.priorityHigh{ -fx-background-color: palevioletred;}
CellFactory
public class TaskCellFactory implements Callback<TableColumn, TableCell> {
@Override
public TableCell call(TableColumn p) {
TableCell cell = new TableCell<Task, Object>() {
@Override
public void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? null : getString());
setGraphic(null);
TableRow currentRow = getTableRow();
Task currentTask = currentRow == null ? null : (Task)currentRow.getItem();
if(currentTask != null){
Priority priority = currentTask.getPriority();
clearPriorityStyle();
if(!isHover() && !isSelected() && !isFocused()){
setPriorityStyle(priority);
}
}
}
@Override
public void updateSelected(boolean upd){
super.updateSelected(upd);
System.out.println("is update");
}
private void clearPriorityStyle(){
ObservableList<String> styleClasses = getStyleClass();
styleClasses.remove("priorityLow");
styleClasses.remove("priorityMedium");
styleClasses.remove("priorityHigh");
}
private void setPriorityStyle(Priority priority){
switch(priority){
case LOW:
getStyleClass().add("priorityLow");
break;
case MEDIUM:
getStyleClass().add("priorityMedium");
break;
case HIGH:
getStyleClass().add("priorityHigh");
break;
}
System.out.println(getStyleClass());
}
private String getString() {
return getItem() == null ? "" : getItem().toString();
}
};
return cell;
} }
과 CSS를 만든하지만 난 여전히 선택된 행을 선택해야합니다. 내가 어떻게 할 수 있니?
) 감사합니다.이 CSS 속성 (-fx-control-inner-background, -fx-accent와 같은) 또는 샘플의 목록을 어디서 찾을 수 있습니까? –
이 리소스를 가리 키도록 업데이트되었습니다. – jewelsea
또 다른 질문이 있습니다. 마찬가지로 비슷한 셀을 강조 표시 할 수 있습니까? –