Question

J'utilise un JTextArea pour afficher un long texte

JTextArea _definition = new JTextArea(5, 50);

avec word-wrap

_definition.setLineWrap(true);
_definition.setWrapStyleWord(true);

intégré dans un JScrollPane

add(new JScrollPane(_definition), gbc);

Tout ce qui fait partie d'un JPanel avec GridBagLayout.

Tout fonctionne bien avec un texte plus court, mais lorsque j'ajoute un texte long avec des retours à la ligne et que la barre de défilement est requise, pack () passe au sud et tous les composants ont juste une taille minimale et le dialogue est inutilisable (ce n'est pas seulement Zone de texte affectée).

J'ai essayé de comprendre ce qui se passait, mais tout ce que j'ai pu comprendre, c'est que cela a à voir avec le texte de TextArea. Je suis coincé .. des idées? Merci!

Était-ce utile?

La solution 2

Il faut que ça marche .. La réponse de Ross me donnait de meilleurs termes à rechercher, alors merci de m'aider en indiquant la direction à suivre!

 pack();
 _definition.setSize(_definition.getPreferredSize());
 pack();

Donc, le double emballage plus quelques extra ... comportement étrange.

Autres conseils

Essayez d’appeler deux fois pack () . JTextArea a un comportement étrange comme décrit dans cette entrée de la base de données de bogues Java Il indique initialement sa taille préférée sous la forme d’une entrée d’une seule ligne très large (par exemple, une ligne, mille colonnes). Une fois qu'il aura compris qu'il s'agit d'une certaine largeur, il indiquera une taille préférée correcte pour le nombre de lignes dont il a besoin.

J'ai dû faire un certain nombre de choses différentes pour contourner ce problème, notamment sous-classer JTextArea et modifier son comportement pour qu'il soit un peu plus intelligent. Double pack () peut vous convenir dans ce cas, ou vous devrez peut-être recourir à des modifications plus complexes, en fonction de la combinaison des éléments de votre présentation.

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