Comment modifier la taille d'une scene2d.ui widget dans une fenêtre/table?
Je suis d'essayer de redimensionner une scene2d.l'interface utilisateur de la fenêtre (qui est en fait une table qui peut être déplacé autour) et de son contenu. Jusqu'à présent, je ne peut réussir à modifier la taille de la fenêtre elle-même, mais pas son contenu. Je suis en train de faire comme ceci:
window.setWidth(newTableWidth);
textField.setWidth(newFieldWidth);
window.invalidate(); <--- New size of window is drawn properly when invalidate() is called
textField.invalidate(); <--- New textField size is NOT drawn, however
Dans ce cas, la fenêtre contient un champ de texte qui je suis en train de redimensionner la fenêtre, mais seulement la fenêtre devient redessiné avec sa nouvelle taille, tandis que le champ de texte reste le même.
Comment puis-je mettre correctement à jour les widgets dans la fenêtre?
OriginalL'auteur mattboy | 2013-08-30
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même Problème et il a fallu un certain temps pour obtenir la solution.
Jetez un oeil à ce quastion curseur a toujours la largeur par défaut.
La solution est:
À partir du wiki de libGDX. Ils ont juste ajouté. Ainsi, alors que vous l'ajouter les widgets de la table, il suffit d'ajouter la ligne
.width(newTableWidth)
à la fin et il doit être à la bonne largeur.vous ne redimensionner la cellule de il pas le widget lui-même. après cela, vous utilisez les invalider sur la table. je pense que c'est pas la faiblesse de sa juste comment il fonctionne
Oui je viens de réaliser aujourd'hui ainsi que les changements doivent être faits à la cellule, pas le widget. Merci pour de me pointer dans la bonne direction.
votre accueil chaleureux. Il m'a pris comme 5-6 Jours à trouver car il n'y avait rien d'écrit à ce sujet. J'ai fait un billet à ce moment pour obtenir de l'information à ce sujet.
OriginalL'auteur BennX
Basé sur BeenX de réponse, il est évident que la taille est réglée sur la cellule du tableau qui contient le widget, plutôt que sur le widget lui-même. Le
table.add()
méthode renvoie une cellule, de sorte que lors de l'exécution detable.add(textField).width(600).height(60)
la largeur et la hauteur est appliqué à cette cellule.Donc ma solution pour mettre à jour un déjà existant de la cellule a été de trouver la cellule, je veux mettre à jour avec
table.getCells()
puis appliquer la nouvelle largeur. L'exemple ci-dessous modifie la largeur de la dernière cellule de la liste.OriginalL'auteur mattboy