2012-01-07 43 views
3

我有一個固定大小(300 x 33)的JTextArea,並且已啓用行封裝,並已添加到JPanel中。只要有人在其中鍵入內容並越過最後一個可見行(本例中爲第二行),該文本會在文本區域的視圖外繼續並隱藏。將JTextArea大小限制爲其文本大小

有沒有辦法將JTextArea中輸入的文本限制爲文本區域的大小,而不是它包含的字符數量(使其依賴於不同字體佔用的不同空間)?我忘了提及沒有固定JTextArea的大小並在構造函數中提供行號和列號將導致文本區域拉伸並填充持有它的JPanel。我相信這是由於面板的佈局是BoxLayout。

+0

如果您限制文本,如果用戶嘗試添加更多文本會發生什麼?如果他們試圖將文本粘貼到組件中怎麼辦? – 2012-01-07 23:23:36

回答

7

您不應該修復JTextArea的大小。而是通過調用具有體面的列和行號參數的構造函數來初始化它,並將其放入JScrollPane中,這樣如果文本增加,則不會丟失文本。

+0

我原來是這麼做的,但是由於包含它的JPanel的佈局是BoxLayout,所以JTextArea會比我給出的約束更多地伸展。 – JCtrl 2012-01-07 22:51:56

+0

@JCtrl:同樣,JTextArea將位於JScrollPane中,如果需要添加到BoxLayout使用容器,您甚至可以將其放入另一個JPanel。 – 2012-01-07 23:19:06

+0

我已經得出結論,您的方法對於我的應用程序來說會更加有效,儘管我將不得不更改一些代碼(不僅僅是JTextArea)。感謝提示。 – JCtrl 2012-01-07 23:40:32