Frage

Ich will mein JTextArea selbst, um die Größe (vertikal erweitern), wenn die letzte Zeile (dh die Höhe des Textbereiches bieten kann) erreicht ist und der Benutzer eine neue Zeile zu beginnen. Sie wissen, wie das Textfeld in MS Word.

Ich habe eine Idee getLineCount() zu verwenden und bestimmen (falls erforderlich) die neue Höhe des JTextArea. Haben Sie, oder wissen von besseren Ansätze für diese Umsetzung?

War es hilfreich?

Lösung

Eigentlich ist die JTextArea hat immer die richtige Größe, so dass alle Textzeilen sichtbar sind. Was Sie erleben, ist wahrscheinlich, dass Sie den Textbereich in einem JScrollPane gewickelt. Sie lassen einfach die Bildlauffenster und machen den Textbereich ein direkter Nachkomme des Behälters.

Ein andere Lösung ist zu hören Ereignisse des Textbereiches und die Größe der Bildlauffenster entsprechend zu ändern. Auf diese Weise können Sie zu einer bestimmten Größe wachsen und dann auf Anzeigebildlaufleisten (zum Beispiel, wenn jemand 500KB Text in den Textbereich Pasten) beginnen.

Andere Tipps

Ich hatte das gleiche Problem. Von meinen Tests, glaube ich nicht, dass der JTextArea seine Größe dynamisch einstellt. Stattdessen scheint seine Größe durch seinen Behälter (a JPanel in meinem Fall) zu beschränken. Allerdings ist die JTextArea seine bevorzugte Größe auf den Text basiert ändern sie enthält. Aus der Dokumentation:

  

java.awt.TextArea hat zwei Eigenschaften Zeilen und Spalten, die verwendet werden, um die gewünschte Größe zu bestimmen. JTextArea nutzt diese Eigenschaften die bevorzugte Größe des Ansichtsfensters, um anzuzeigen, wenn sie in einem JScrollPane platziert, um die Funktionalität von java.awt.TextArea bereitgestellt anzupassen. JTextArea hat eine bevorzugte Größe von dem, was benötigt wird, die gesamten Text angezeigt werden, so dass es richtig innerhalb eines JScrollPane funktioniert. Wenn der Wert für Zeilen oder Spalten gleich Null ist, ist die bevorzugte Größe entlang dieser Achse für das Ansichtsfenster bevorzugten Größe entlang der gleichen Achse verwendet.

Ich hatte das gleiche Problem, ich habe die JTextArea in eine JScrollPane setzen und stellen Sie die bevorzugte Größe von JTextArea, und ich glaube, das ist die Ursache des Problems.

So ist die richtige Lösung ist, die JTextArea in eine JScrollPane zu setzen, und berühren Sie nicht die bevorzugte Größe von JTextArea, setzen JScrollPane der statt.

Zum JTextArea " Eigenschaften " - Checkliste " lineWrap ".

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top