Question

Je veux que mon JTextArea se redimensionne (développer verticalement) lorsque la dernière ligne (que la hauteur de la zone de texte peut offrir) est atteinte et que l'utilisateur veut commencer une nouvelle ligne. Vous savez, comme dans la zone de texte MSWord.

J'ai une idée d'utiliser getLineCount() et déterminer (le cas échéant) la nouvelle hauteur du JTextArea. Avez-vous, ou connaissez des meilleures approches pour la mise en œuvre cela?

Était-ce utile?

La solution

En fait, le JTextArea a toujours la taille correcte pour toutes les lignes de texte sont visibles. Ce que vous ressentez est probablement que vous enveloppé la zone de texte dans un JScrollPane. Il suffit d'omettre le volet de défilement et rendre la zone de texte un enfant direct du récipient.

Une autre solution consiste à écouter redimensionner les événements de la zone de texte et la taille de la fenêtre de défilement en conséquence. De cette façon, vous pouvez atteindre une certaine taille, puis commencer à afficher les barres de défilement (par exemple, quand on colle 500KB de texte dans la zone de texte).

Autres conseils

J'ai eu le même problème. De mes tests, je ne crois pas que le JTextArea définit sa taille dynamique. Au lieu de cela, sa taille semble être limitée par son contenant (un JPanel dans mon cas). Cependant, le fait JTextArea changer sa taille préférée en fonction du texte qu'il contient. De la documentation:

  

java.awt.TextArea a deux propriétés des lignes et des colonnes qui sont utilisées pour déterminer la taille préférée. JTextArea utilise ces propriétés pour indiquer la taille préférée de la fenêtre lorsqu'elle est placée à l'intérieur d'un JScrollPane pour correspondre à la fonctionnalité fournie par java.awt.TextArea. JTextArea a une taille préférée de ce qui est nécessaire pour afficher tout le texte, de sorte qu'il fonctionne correctement à l'intérieur d'un JScrollPane. Si la valeur de lignes ou de colonnes est égal à zéro, la taille préférée selon cet axe est utilisé pour la fenêtre de taille préférée le long du même axe.

J'ai eu le même problème, je mets le JTextArea dans un JScrollPane et définir la taille préférée de JTextArea, et je crois que c'est la cause du problème.

Donc, la bonne solution est de mettre le JTextArea en JScrollPane, et ne pas toucher la taille préférée de JTextArea, définissez JScrollPane de la place.

Aller à JTextArea " Propriétés " - check-list " lineWrap ".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top