2017-04-21 51 views
2

我有一個JTextArea與固定大小和允許JTextArea包裝的行和單詞。行JTextArea Java

我試圖在JTextArea破產之前得到最後一個詞。

有沒有辦法得到它?

我已經嘗試使用lineCount(),getStartOffset(),getEndOffset()getRows()。我知道我的文本有多長,它有多少個字符。 lineCount總是return 1

我在考慮改變以獲得JTextArea的可能字符長度,或者查找字符串中的中斷信息,但是沒有任何方法。

有沒有人有想法得到它?

+0

[This answer](http://stackoverflow.com/a/31519905/994125)可能會幫助你。 – Laf

回答

0

下面是一些未經測試的代碼給你一個想法:如果你有一個問題找到一個破發點字符通過拆分在下面的評論中提供的鏈接應該是有幫助。

由於您知道文本區域的大小,因此您可以使用文本區域的模型/視圖方法來獲取文本。

int width = textArea.getSize().width; 
int height = textArea.modelToView(0).height/2; 
int offset = textArea.viewToModel(new Point(width, height)); 
int start = Utilities.getPreviousWord(offset); // or maybe getWordStart(...)? 
int end = Utilitities.getWordEnd(start); 
String text = textArea.getText(start, end - start); 
+0

這是工作感謝它:)但這只是第一行,如果我看到它的權利?我是否必須更改 int height = textArea.modelToView(0).height/2; 至 int height = textArea.modelToView(0).height/3; 當我有更多的行? – Alessandra

+0

modelToView(...)方法中返回的Rectangle的高度將爲您提供一條線的高度。所以你可以通過行數倍數來獲得合適的y值。 – camickr

0

按空格字符拆分字符串,然後找到數組的最後一個元素。一個簡單的例子:

String myString = "foo bar foo bar"; 
String[] stuff = myString.split(" "); 
String last = stuff[stuff.length-1]; 

「最後」字符串的結果是「bar」。

編輯:How to get line-wrapped text from JTextArea into multiple line-seperated Strings

+0

可能不會工作,因爲整個字符串是1行,即使它獲得了視覺斷線 – XtremeBaumer

+0

@XtremeBaumer視覺中斷仍然必須是某種換行符。如果你暗示nextLine()將不起作用,那麼用換行符分割整個大字符串,然後將這些較小的字符串拆分一個空格。這並不是什麼大不了的事情,只是更多的分裂而已。 – coinbird

+1

look [here](http://stackoverflow.com/questions/31519473/how-to-get-line-wrapped-text-from-jtextarea-into-multiple-line-seperated-strings/31519905#31519905) – XtremeBaumer