Wie kann ich eine JTextArea mit einer bestimmten Breite und die kleinste mögliche Höhe erforderlich, um alle den text?

In allen Beispielen, die ich finden kann, verwenden Sie eine JTextArea die Höhe & Breite bekannt ist, vor der Erstellung des JTextArea, und wenn die JTextArea erfordern würde, mehr Höhe, dann ist es in einer JScrollPane. Offensichtlich, die Höhe der JTextArea ist abhängig von der Breite und der text-Inhalt.

Nun, meine situation erfordert, dass ich nicht mit einem JScrollPane, sondern dass der JTextArea gerade groß genug, um der gesamte text angezeigt wird. Wenn ich die JTextArea, ich weiß, der text-Inhalt ist und wie viel Breite wird es haben, mit zu arbeiten; ich weiß nicht, die Höhe - ich will das so klein wie möglich, ohne schneiden Sie den text. Dies scheint sehr schwer zu erreichen.

Als eine Randnotiz, die JTextArea Hinzugefügt werden, um eine JPanel, die nicht über eine layout-manager - es verwendet die absolute Positionierung auf der Grundlage der hinzugefügten Komponente bevorzugte Größe. Dies erfordert, dass meine JTextArea zurückkehren würde, die richtigen Maße, auf getPreferredSize(). Die richtigen Maße sollten die Breite, die ich angegeben habe, als ich konstruiert, und die minimale Höhe, die erforderlich ist, um alle den text mit der vorgesehenen Breite.

Ich habe festgestellt, dass einige ähnliche threads, diskutieren die Merkwürdigkeiten/bugs mit den beteiligten JTextArea sind manchmal löste durch den Aufruf pack() zweimal auf den übergeordneten container. Dies ist nicht eine option für mich. Ich bin versucht zu schaffen im Grunde meine eigene JTextArea nimmt eine Breite und String und berechnet die erforderliche Mindest-Höhe basierend auf der Breite und schriftart-Einstellungen, aber ich dachte, ich würde bitten, um den ersten, bevor Sie verbringen die Zeit, das zu tun.

Hoffentlich wird meine Frage klar ist. Danke Euch allen für Eure Hilfe!!!

Würde ein JLabel machen, statt die JTextArea?
Thompson Sicher, ich könnte mit einem JLabel, aber dann würde ich immer noch manuell einfügen Zeilenumbrüche in den string, das würde von mir verlangen, um zu berechnen, wo Sie sein sollten, basierend auf der Breite und schriftart-Einstellungen, und dann muss ich fügen Sie einige spezielle Handhabung zu machen, wickeln Sie auf ganze Wörter anstelle Zeichen. Dies sind Dinge, die zur Verfügung gestellt von der JTextArea, so würde ich es vorziehen, zu verwenden, wenn ich kann.
Siehe Beispiel unten. Ich möchte ein wenig "HTML-trick", das zu erreichen, solche Dinge. 😉

InformationsquelleAutor Nate W. | 2010-11-03

Schreibe einen Kommentar