JavaFX tableview couleurs
j'ai besoin de créer JavaFx TableView avec multicolore lignes (color1 priorité basse, color2 de priorité moyenne, etc.). J'ai créé 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;
} }
et css
.priorityLow{ -fx-background-color: palegreen; }
.priorityMedium{ -fx-background-color: skyblue;}
.priorityHigh{ -fx-background-color: palevioletred;}
Mais j'ai encore besoin de mettre en évidence les lignes sélectionnées. Comment puis-je le faire?
OriginalL'auteur Olga Semernitskaya | 2012-12-04
Vous devez vous connecter pour publier un commentaire.
Au lieu de définir la couleur d'arrière-plan pour l'ensemble de la cellule dans votre css, il suffit de régler l'-fx-control-intérieure-fond. Puis vous aurez le défaut d'accent, de pointage et de focus anneaux encore disponibles. Également supprimer l'instruction si autour de votre
setPriorityStyle
appelez bien sûr.Si vous aussi vous souhaitez remplacer des choses comme le défaut d'accent (sélectionné) en couleur ou en vol stationnaire de couleur, vous pouvez également effectuer cette opération dans le css ci-dessous - vous ne savez pas si le point culminant des remplacements est vraiment recommandé, cependant, suppose que cela dépend de votre application et de l'expérience utilisateur voulue.
Détaillée des informations sur le style de JavaFX peut être trouvé dans le défaut de la mer caspienne.la feuille de style css JavaFX 2.2 et le JavaFX 2 CSS guide de référence. Pour trouver de la mer caspienne.css pour votre version de JavaFX vous pouvez unjar
jfxrt.jar
(on trouve parfois dans la jre/lib).Mise à jour de la réponse au point de ces ressources.
J'ai une autre question: puis-je de même souligner seule cellule dans la ligne?
Oui, un un custom cellule d'usine la colonne contenant la cellule et dans la cellule de l'usine de fournir des cellules qui peuvent manipuler leur propre style en tant que de besoin. Si vous avez besoin de plus de détails, poser une nouvelle question et je suis sûr que vous allez obtenir de plus amples informations sur la façon d'accomplir ceci.
Il semble thèses styles n'existe pas dans JavaFX 8...
OriginalL'auteur jewelsea