最後の行 (テキスト領域の高さが提供できる) に達し、ユーザーが新しい行を開始したいときに、JTextArea 自体のサイズを変更 (垂直方向に拡張) したい。MSWord のテキスト ボックスのようなものです。
getLineCount()
JTextArea の新しい高さを (必要に応じて)使用して決定するという考えがあります。これを実装するためのより良いアプローチがありますか、または知っていますか?
最後の行 (テキスト領域の高さが提供できる) に達し、ユーザーが新しい行を開始したいときに、JTextArea 自体のサイズを変更 (垂直方向に拡張) したい。MSWord のテキスト ボックスのようなものです。
getLineCount()
JTextArea の新しい高さを (必要に応じて)使用して決定するという考えがあります。これを実装するためのより良いアプローチがありますか、または知っていますか?
実際には、 はJTextArea
常に正しいサイズなので、すべてのテキスト行が表示されます。おそらく、テキスト領域をJScrollPane
. スクロール ペインを省略して、テキスト エリアをコンテナの直接の子にするだけです。
もう 1 つの解決策は、テキスト領域のサイズ変更イベントをリッスンし、それに応じてスクロール ペインのサイズを変更することです。このようにして、特定のサイズに拡大してから、スクロール バーの表示を開始できます (たとえば、誰かが 500 KB のテキストをテキスト領域に貼り付けた場合)。
私も同じ問題を抱えていました。私のテストでは、JTextArea がそのサイズを動的に設定するとは思えません。代わりに、そのサイズはコンテナー (私の場合は JPanel) によって制限されているようです。ただし、JTextArea は、含まれるテキストに基づいて適切なサイズを変更します。ドキュメントから:
java.awt.TextArea には、適切なサイズを決定するために使用される行と列の 2 つのプロパティがあります。JTextArea はこれらのプロパティを使用して、java.awt.TextArea によって提供される機能と一致するように JScrollPane 内に配置されたときにビューポートの推奨サイズを示します。JTextArea には、すべてのテキストを表示するために必要な推奨サイズがあるため、JScrollPane 内で適切に機能します。行または列の値がゼロに等しい場合、その軸に沿った優先サイズが、同じ軸に沿ったビューポートの優先サイズに使用されます。
私は同じ問題を抱えていました。JTextArea を JScrollPane に入れ、JTextArea の適切なサイズを設定しました。それが問題の原因だと思います。
したがって、適切な解決策は、JTextArea を JScrollPane に配置することです。JTextArea の推奨サイズには触れず、代わりに JScrollPane を設定します。