tôi cần tạo JavaFx TableView với các hàng nhiều màu (color1 cho ưu tiên thấp, color2 cho mức độ ưu tiên trung bình, v.v.). Tôi đã tạo ra CellFactoryMàu xem bảng JavaFX
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;
} }
và css
.priorityLow{ -fx-background-color: palegreen; }
.priorityMedium{ -fx-background-color: skyblue;}
.priorityHigh{ -fx-background-color: palevioletred;}
Nhưng tôi vẫn cần phải làm nổi bật hàng lựa chọn. Làm thế nào tôi có thể làm điều đó?
Cảm ơn bạn)) Bạn có thể trả lời, tôi có thể tìm danh sách các thuộc tính css này (như -fx-control-inner-background, -fx-accent) hoặc một số mẫu không? –
Đã cập nhật câu trả lời để trỏ đến các tài nguyên này. – jewelsea
Tôi có một câu hỏi khác: tôi có thể làm nổi bật tương tự ô đơn lẻ trong hàng không? –