Javafx textfield redimensionner à la longueur du texte?
Bonjour les gars, je suis la construction d'un serveur de chat où j'utilise un champ de texte sur l'écran pour taper dans le chat le message que l'utilisateur écrit, l'idée est qu'il fonctionne comme une bulle au-dessus d'une des personnes de sa tête quand il tape un message.
ma question est dans le but de ne pas faire une zone de texte qui est trop grand ou trop petit est-il un moyen de redimensionner la zone de texte (garniture si vous voulez) afin de s'adapter au texte écrit dans le textfield?
P. S. je suis en utilisant JavaFx scenebuilder de faire tout cela.
OriginalL'auteur Marc Rasmussen | 2012-10-05
Vous devez vous connecter pour publier un commentaire.
Il est temps de faire un peu de codage en coulisses(constructeur) :).
Le morceau de code suivant n'est pas une solution élégante, mais mieux que rien. 🙂
cela suppose que chaque personnage de chaque javafx police dans l'existence est exactement 7px large, dans chaque circonstance ... qui pourrait bien être la pire hypothèse dans l'histoire de l'humanité. Son impression de voler dans l'espace avec la pression de l'eau à partir d'un (géant) de tuyau.
Hey @specializt qui n'est pas si mauvais. Cette hypothèse peut sauver un tas de jours si il n'y a pas d'autres cas d'utilisation, que ce soit dans l'application ;). Sinon, vous pouvez toujours évaluer autres réponses ici ou sur les mêmes questions, et bien sûr, postez votre réponse si ceux ne sont pas satisfaisants. À côté de cela, je vais essayer de mettre à jour la réponse avec les plus récentes options, il y a beaucoup d'améliorations depuis, il a été posté. Merci pour le rappel.
Le nombre 7 qui fonctionne pour moi, de quoi tu parles @specializt?
exactement ce que j'ai écrit. Ce n'est pas possible de l'écrire plus simple ... peut-être que vous devriez demander à quelqu'un qui parle anglais pour obtenir de l'aide.
OriginalL'auteur Uluk Biy
Vous pouvez utiliser
computeTextWidth
méthode dans lecom.sun.javafx.scene.control.skin.Utils
. la méthode est utilisée dansjavafx.scene.control.Label
classe pour calculer la largeur minimale de l'étiquette de contenu.J'ai résolu mon problème en tant que ci-dessous:
J'ai ajouté un auditeur de
textProperty
, et à chaque changement de texte-je changer laprefWidth
de textfield.Remarque: tant que le
Utils.computeTextWidth()
est pas public, j'ai copié le code source d'une nouvelle classe (TextUtils
).Voici le code source complet:
Excellente solution!
OriginalL'auteur
En JavaFX 8, il existe une solution pour que, voici le code:
Heureux De Codage,
Kalasch
tf.setPrefWidth(width + 14)
.Celui-ci fonctionne assez bien.
OriginalL'auteur Kalaschni
Depuis JavaFX 8, c'est de loin la plus simple:
OriginalL'auteur Emily L.
Pas de police dépendant de la magie requise si vous utilisez setPrefColumnCount
OriginalL'auteur adekcz
Le meilleur /le plus simple est d'utiliser JavaFX "USE_COMPUTED_SIZE" option. Vous pouvez la définir dans le FXML, ou par programmation comme ceci:
OriginalL'auteur Jerry H.