换行JTextArea Java

时间:2017-04-21 13:19:32

标签: java jtextarea line-breaks wrapping line-count

我有一个JTextArea,其大小固定,允许JTextArea包裹行和单词。

我试图在JTextArea突破线之前得到最后一个字。

有办法搞定吗?

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

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

有没有人有想法得到它?

2 个答案:

答案 0 :(得分:0)

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

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

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

修改:如果您在查找要分割的断点字符时出现问题,则以下评论中提供的链接也会有所帮助:How to get line-wrapped text from JTextArea into multiple line-seperated Strings

答案 1 :(得分: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);