2017-09-10 5 views
1

Si je mets le texte ExtendedDescription pour un DefaultOption en cliquant sur l'option ouvre une vue où le texte est affiché dans un HBox et est centré là. Je voudrais personnaliser la zone HBox où le texte est: aligner le texte non seulement pour centrer, colorier le texte ou gras/italique des parties de celui-ci, ajouter une petite image peut-être ...Comment puis-je personnaliser la vue ExtendedDescription pour DefaultOption?

Je n'en ai vu aucun API pour accéder à tout ce qui concerne la personnalisation sauf pour OptionEditor peut-être mais quand j'essaie d'appeler editorFactoryProperty() le facultatif est toujours vide. Suis-je censé en créer un moi-même et le mettre en place? Quel est le processus pour cela?

Répondre

1

Jusqu'à présent, il n'y a pas d'API pour la vue étendue.

Si vous vérifiez avec ScenicView, vous pouvez voir que les nœuds de vue ont des classes de style personnalisées appliquées, donc vous serez en mesure d'utiliser les recherches sur l'exécution pour obtenir une prise de l'BorderPane (id: extended-pane), le HBox en haut (id: extended-top), celui au centre (id: extended-center), et son Text enfant (styleClass: extended-text).

Extended View

Quelque chose comme cela devrait fonctionner:

viewProperty().addListener((obs, ov, nv) -> { 
     if (nv != null && nv.getName().startsWith("Extended_View_Gender")) { 
      BorderPane pane = (BorderPane) nv.lookup(".extended-pane"); 
      if (pane != null) { 
       Text text = (Text) pane.lookup(".extended-text"); 
       text.setStyle("-fx-fill: red"); 
      } 
     } 
    }); 
+0

Cela provoque le texte dans toutes les vues étendues à être rouge. Peut-être que je me trompe. Est-ce censé me laisser personnaliser la vue étendue de chaque option? Peut-être que j'appelle le mauvais 'viewProperty()'? – Mark

+0

Pour personnaliser différentes vues étendues, il vous suffit de vérifier le nom de la vue. Dans chaque cas, la vue étendue sera nommée '' Extended_View_ "+ option.caption' plus d'autres indices liés au niveau. J'ai édité ma réponse ci-dessus. –

+0

C'est bon, merci. Pouvons-nous ou vous déposer une demande pour avoir une API appropriée pour cela? – Mark