2012-08-27 8 views
1

Toutes les largeurs de composants sont les mêmes. J'ai un JPanel (disposition de boîte; PAGE_AXIS). j'ai ajouté un Box.filler sur ce qui a des spécifications suivantes:Redimensionnement automatique JTextArea

taille minimale (hauteur) -1

taille préférée (la hauteur) JPanel hauteur

taille Maximim (la hauteur) JPanel hauteur

J'ai ajouté JTextArea avec une bordure de 7 pixels d'épaisseur (seulement ci-dessous).

Lorsque je tape dans le texte, le JTextArea grossit, mais ne suffit pas, et après quelques lignes le texte va hors limites (vous ne pouvez pas le voir plus).

je peux déterminer le nombre de lignes de texte existent (en utilisant FontMetrics), et je peux forcer setSize en conséquence, mais rien ne change vraiment. L'impression de JTextArea.getHeight() montre que la taille a changé selon mes termes, mais visuellement cela reste comme si ce n'était pas le cas. Et je n'ai pas oublié de valider et de repeindre.

Comment puis-je forcer le JTextArea à redimensionner à certaine taille?

+0

1) Quelle est votre question? 2) Pour une meilleure aide plus tôt, postez un [SSCCE] (http://sscce.org/). 3) Vous pourriez chercher à utiliser une étiquette multi-lignes (formatée au format HTML) à la place. –

Répondre

1

Vous pourriez aussi juste faire les vous pouvez essayer aussi des mots d'emballage JTextArea ?:

JTextArea.setWrapStyleWord(true); 

le montant de lignes à l'aide setRows(int rows) puis revalidate() et repaint()

+1

Karlovsky écrit à propos des lignes, pas des colonnes, qui partent des limites. –

+0

@StefanNeubert true voir la page edietd –

0

Vous pouvez mettre le JTextArea en JScrollPane pour garder les lignes supplémentaires visibles sans changer l'espace dont JTextArea a besoin à l'écran.

Voir Oracle Tutoriel sur how to use Scroll Panes pour plus d'informations.

Questions connexes