Lier Taille de la Police dans JavaFX?
Je voudrais faire ma demande de liquide. Cependant, les polices look petit par rapport aux éléments de l'INTERFACE utilisateur quand je fais les fenêtres en grand. En fin de compte, je veux que la taille de mon texte pour obtenir un plus grand ou plus petit quand je redimensionner la fenêtre. Je sais que je pourrais théoriquement le faire avec la propriété de style, mais j'ai déjà cette propriété lié à quelque chose d'autre dans certains cas.
Je sais qu'il y a le "fontProperty" la méthode, mais je n'ai rien à lier puisque je ne peux pas comprendre comment créer une dynamique ObjectProperty avec un synchronisés taille. Que dois-je faire?
EDIT: Pour éviter toute confusion, je suis en train de faire le changement de taille de Police sur la base d'autres facteurs, et non pas l'inverse.
OriginalL'auteur Taconut | 2014-05-16
Vous devez vous connecter pour publier un commentaire.
Juste mettre tout où vous voulez que le fontsize à changer dans un récipient et jeu de style ou de l'utilisation des liaisons si vous le souhaitez.
Je ne suis pas sûr de ce que votre style est déjà lié, mais vous avez le droit de mettre plusieurs css valeurs dans la chaîne de style.
Il n'a pas d'importance, il suffit de mettre tout ce que vous voulez changer la police dans un récipient. Remarquez comment tout dans la vbox enfant a la police changé. Vous pouvez avoir des couches de conteneurs avec une autre feuille de style css valeurs.
Comme je l'ai dit, c'est fait de façon dynamique. Vous dites que j'aurais pour envelopper chaque composant-je modifier dans son propre récipient juste d'appliquer le CSS? Il semble comme une terriblement laid solution de contournement, mais si ses tout ce que j'ai obtenu, je suppose qu'Il va falloir le faire :/.
Non, seulement si vous voulez autre feuille de style css valeurs pour le même élément, comme d'avoir des polices de caractères différentes. Comme vous pouvez le voir dans mon exemple, j'ai tenu 2 sans rapport avec css valeurs dans le même style string à l'aide de concat. Vous avez dit que votre propriété de style est déjà lié, il suffit d'ajouter un concat à tout ce que vous voulez.
Pour moi, cela ne change pas enfant étiquettes de taille de police. C'est leur travail autour de cela?
OriginalL'auteur brian
Définir le .racine -fx-font-size
Dans la feuille de style
.root
sélecteur, ensemble-fx-font-size
la valeur souhaitée:.racine {
-fx-font-size: 40px;
}
Pourquoi cela fonctionne
Cela fonctionne parce que:
em
unités (qui sont basés sur la taille de police par défaut).-fx-font-size
est un hérité style.Une fois que vous faites cela, tous les contrôles (et le texte à l'intérieur) se redimensionner automatiquement bien pour s'adapter quelle que soit la taille de police que vous avez spécifié.
Liées Échantillon
Informations Liées
em
générique est une unité qui n'est pas spécifique à JavaFX et em unités sont également utilisées en HTML CSS. Si vous êtes intéressé, vous pouvez lire un un débat plus large sur em unités par rapport à d'autres unités.À l'aide de em unités au FXML par l'expression de liaison
De simplement définir une taille de police par défaut, vous reçoit environ 90% du chemin à l'endroit où vous devez être, mais n'est pas forcément universel fixer comme certains l'agencement des unités peut être spécifié de ne pas utiliser em unités. La plupart du temps ce n'est pas vraiment un problème, mais si il est dans votre cas, vous pouvez également appliquer un mécanisme décrit dans un Oracle liste de diffusion des développeurs post, qui semble fonctionner, cependant, est un peu maladroit.
Comment l'utilisation d'une expression de liaison.
Pour 35em x 25em vous pourriez écrire:
Il n'est pas 100% concis, mais peut-être praticables.
Ce genre de dimensionnement des expressions de travailler en scène builder 1.1, ce qui est agréable.
Voici un exemple en utilisant un Rectangle pour stocker la largeur et la hauteur des modificateurs pour le fichier fxml.
Ou au lieu de cela, vous pouvez créer votre propre unité de la classe et de l'utiliser dans votre dimensionnement des expressions, par exemple:
Merci d'éditer votre question pour expliquer un peu plus en détail de ce que vous essayez de faire.
J'ai ajouté une phrase. Maintenant que je l'ai lu, je peux voir comment vous avez interprété la question. Désolé à ce sujet.
Vous êtes un JavaFX dieu, JewelSea. J'ai déjà utilisé cette réponse pour un tout autre problème. Depuis que vous avez m'ont beaucoup aidé sur ce projet, je vais aller de l'avant et vous mettre dans les crédits. Maintenant, si je peux obtenir de la police de redimensionnement de travail, il doit permettre à chacun de voir clairement votre nom sur l'écran de démarrage :D. Merci à tous pour votre aide!
OriginalL'auteur jewelsea
Il est plus simple et bonne méthode pour lier taille de la police avec la taille du conteneur, afin de faire d'elle un réactif de police effet d'échelle.
La
bind(Bindings.concat("-fx-font-size: "
est une bonne alternative. mais lorsque vous redimensionnez les fenêtres, il semble être très lent et je pense n'est pas la bonne façon de résoudre le problème.Vous pouvez déclarer FontProperty et lier cette FontProperty pour le Composant (Étiquette, Texte, etc.) et finalement de créer un événement pour lier la taille avec le FontProperty taille selon notre conception:
Puis dans le constructeur ou certaines méthode init vous pouvez lier la propriété font de notre objet avec notre dynamique de police:
Enfin, vous devez lier le conteneur conteneur de modifier la taille avec la dynamique de la taille de la police:
Avec cette solution de police dynamique d'ajustement est très fluide et rapide, même plus que
bind(Bindings.concat("-fx-font-size: "
méthode.ObjectExpression<Font> fontTracking = Bindings.createObjectBinding(() -> Font.font(getWidth() / 4), widthProperty())
et puistextTracking.fontProperty().bind(fontTracking)
.OriginalL'auteur jalopezsuarez
J'ai eu un problème similaire et résolu de cette façon:
Cela fonctionne parce que le style qui est défini pour le volet principal affectera en tant que modificateur de tous les nœuds qui sont déjà définies dans le FXML. Les nœuds qui ont déjà une classe de style sont également touchés, comme le nouveau style vient s'ajouter la couche supérieure de style dans les feuilles de style en cascade.
Le principal avantage de cette solution est de gérer en un seul endroit, la taille de la police facteur de zoom. Ainsi, vous n'avez pas à trouver chaque nœud qui a une propriété de Police pour qu'il fonctionne.
Exemples de fichiers:
les styles.css
principal.fxml
MainController.java
OriginalL'auteur Alexandre