La couleur du texte sur JavaFX zone de liste déroulante d'éléments de changer seulement après la première sélection
Je fais construire un formulaire de saisie en JavaFx à partir de Java 8.0 à l'aide SceneBuilder 2.0 sur Windows 7 e(fx)clipse.
J'ai une Chaîne simple zone de liste déroulante, et que vous voulez changer la couleur et la taille des polices dans la liste et de la Chaîne sélectionnée. Le code css, j'utilise modifie le texte de l'élément sélectionné. Cependant, la première fois que l'on supprime la liste, il est en noir de la police par défaut. La deuxième fois, la couleur de police et la taille de tous les éléments ont changé pour les valeurs correctes.
Comment puis-je faire la liste des polices démarrer dans la bonne couleur et la taille?
Ici est simplifié le code de la méthode initialize dans ma classe de Contrôleur:
ObservableList<String> types = FXCollections.observableArrayList
( "large", "medium", "small" );
comboBox.setItems( types );
et css:
#comboBox .list-cell
{
-fx-font-family: arial;
-fx-font-size: 16px;
-fx-text-fill: #a0522d;
}
- Juste une suggestion, essayez de combo.show() et combo.hide() dans la Plate-forme.runLater, à l'application de démarrage.
- Bonne idée, mais il ne fonctionne pas. Bizarrement, je peux préréglage de la famille de police et de la taille à l'aide de zone de liste déroulante.setStyle(), mais le préréglage de la couleur ne fonctionne pas comme dans la zone de liste déroulante.setStyle( "-fx-texte-fill: #a0522d;" );.
Vous devez vous connecter pour publier un commentaire.
Vous devez créer un CellFactory et vous ne pouvez pas utiliser les CSS ( je ne sais pas pourquoi, mais c'est la seule façon que je pouvais le faire fonctionner):
Malgré le fait que vous êtes à l'aide de l'API standard, je crois que vous aussi vous devez l'utiliser dans le
CSS
et spécifier dans leCSS
que la première fois est à définir par programmation comme cela sera utile pour celui qui permettra de maintenir votre logiciel.style.css
Le détail curieux: JavaFX 2 vous pourrait définir cette via
CSS
mais encore fallait utiliser un CellFactory.