2016-08-03 6 views
0

J'ai une question basée sur TreeTableViews et ses lignes. J'ai créé une vue arborescente des objets nommés Component, et j'ai 3 classes de composants, que je nommerai A, B et C. Dans mon projet, les objets B sont contenus sur A, et les objets C sont contenus sur B objets. J'ai été en mesure d'afficher le TreeTableView avec ces 3 niveaux de composants, mais maintenant je voudrais ajouter quelques CSS dans ce tableau pour pouvoir avoir certaines caractéristiques:TreeTableView avec différentes tailles de nœuds dans javaFX

-D'abord je voudrais la taille d'un objet être plus grand que les objets B et même C, pour ce T a essayé des étoffes comme ce basé sur ce que j'ai vu sur internet:

.tree-table-cell { 
    -fx-font-size: 11pt; 
} 

.tree-table-cell:sub-tree-item { 
    -fx-font-size: 9pt; 
} 

Mais il semble que cela ne fonctionne pas ...

-Puis je voudrais pouvoir avoir comme un séparateur entre chaque composant A, juste pour la visibilité de la table

-Et enfin je voudrais l'élément sélectionné et tout son nœud d'arbre (si C est sélectionné cela signifie, l'élément C + son parent B + son parent A) pour être en gras ou quelque chose pour l'identifier directement. Pour cela, j'essayé d'appliquer un CSS simple sur cette classe:

.tree-item:selected { 
    -fx-font-weight: bold; 
} 

sans succès ...

En fait, je ne suis pas en mesure de manipuler mes TreeItems comme je voudrais (ajouter un peu de classe StyleSheets dans TreeItem n'est pas possible).

J'espère que j'étais assez clair. Merci pour votre aide

Répondre

0

J'ai utilisé TreeTableView et appliqué avec succès des styles basés sur différents critères. Mon approche consistait à appliquer des styles au TreeTableRow (mais je pense que la cellule fonctionnerait aussi). La rangée n'est pas facile d'obtenir une référence à (au moins, je n'ai pas vu un moyen facile). Une façon dont j'ai accédé était d'ajouter une usine de rangée. En usine, j'ai ajouté mes gestionnaires drag and drop. Cependant, pour le style, j'ai utilisé des cellules personnalisées (puisque j'en avais besoin pour l'édition). Dans la méthode updateItem de ces cellules personnalisées, j'obtiendrais la ligne et modifierais le style. Cela était nécessaire car les lignes sont virtualisées et réutilisées. J'ai trouvé que je devais vérifier les lignes "vides" pendant l'appel updateItem et supprimer le style (qui, dans mon cas, comprenait une bordure rouge pour les éléments "invalides").

En ce qui concerne les pseudo-classes en CSS, je vous recommande de vous assurer que vous utilisez les bonnes. Si vous n'utilisez pas une pseudo-classe intégrée, vous devrez en créer une dans le code, puis l'enregistrer dans la classe que vous essayez de styler. J'ai trouvé un website avec quelques informations, mais si vous cherchez, je suis sûr qu'il y a plus d'informations là-bas.

Je ne pense pas que l'article lui-même supporte le style (comme vous l'avez noté). Je vois cela plus comme un modèle/classe de données (par opposition à l'interface utilisateur).