4

最後の行 (テキスト領域の高さが提供できる) に達し、ユーザーが新しい行を開始したいときに、JTextArea 自体のサイズを変更 (垂直方向に拡張) したい。MSWord のテキスト ボックスのようなものです。

getLineCount()JTextArea の新しい高さを (必要に応じて)使用して決定するという考えがあります。これを実装するためのより良いアプローチがありますか、または知っていますか?

4

4 に答える 4

9

実際には、 はJTextArea常に正しいサイズなので、すべてのテキスト行が表示されます。おそらく、テキスト領域をJScrollPane. スクロール ペインを省略して、テキスト エリアをコンテナの直接の子にするだけです。

もう 1 つの解決策は、テキスト領域のサイズ変更イベントをリッスンし、それに応じてスクロール ペインのサイズを変更することです。このようにして、特定のサイズに拡大してから、スクロール バーの表示を開始できます (たとえば、誰かが 500 KB のテキストをテキスト領域に貼り付けた場合)。

于 2010-04-08T15:27:03.597 に答える
1

私も同じ問題を抱えていました。私のテストでは、JTextArea がそのサイズを動的に設定するとは思えません。代わりに、そのサイズはコンテナー (私の場合は JPanel) によって制限されているようです。ただし、JTextArea は、含まれるテキストに基づいて適切なサイズを変更します。ドキュメントから:

java.awt.TextArea には、適切なサイズを決定するために使用される行と列の 2 つのプロパティがあります。JTextArea はこれらのプロパティを使用して、java.awt.TextArea によって提供される機能と一致するように JScrollPane 内に配置されたときにビューポートの推奨サイズを示します。JTextArea には、すべてのテキストを表示するために必要な推奨サイズがあるため、JScrollPane 内で適切に機能します。行または列の値がゼロに等しい場合、その軸に沿った優先サイズが、同じ軸に沿ったビューポートの優先サイズに使用されます。

于 2012-12-26T20:32:41.077 に答える
0

私は同じ問題を抱えていました。JTextArea を JScrollPane に入れ、JTextArea の適切なサイズを設定しました。それが問題の原因だと思います。

したがって、適切な解決策は、JTextArea を JScrollPane に配置することです。JTextArea の推奨サイズには触れず、代わりに JScrollPane を設定します。

于 2016-03-07T11:28:06.180 に答える