换行 JTextArea Java

Line wraped JTextArea Java

我有一个固定大小的 JTextArea 并且 JTextArea 允许换行和单词。

我正试图在 JTextArea 换行之前得到最后一个词。

有办法得到吗?

我已经尝试使用 lineCount()getStartOffset()getEndOffset()getRows()。我知道我的文字有多长,有多少个字符。 lineCount 总是 return 1.

我正在考虑更改以获取 JTextArea 可能的字符长度,或者在字符串中查找中断信息,但没有相应的方法。

有没有人想得到它?

用 space 字符拆分字符串,然后找到数组的最后一个元素。一个简单的例子:

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

"last" 字符串的结果将是 "bar"。

编辑:如果您在寻找要分割的断点字符时遇到问题,下面评论中提供的 link 应该也会有所帮助:

这里有一些未经测试的代码可以给你一个想法。

既然您知道文本区域的大小,那么您可以使用文本区域的 model/view 方法来获取文本。

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);