这仅用于学习目的。
我有两个JTextArea -s:messagearea和chatarea。与往常一样,消息区域中有一个随机文本,行之间用\ n分隔。当单击一行时,我想将该行附加到chatarea。这是我的代码:
messagearea.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent me)
{
if (!messagearea.getText().trim().equals("")) {
int position = messagearea.viewToModel(messagearea.getMousePosition());
String[] text = messagearea.getText().split("\n");
int[] charNum = new int[text.length];
for (int i = 0; i < text.length; i++) {
charNum[i] = text[i].length() + 1;
}
int sum = 0;
for (int i = 0; i < charNum.length; i++) {
sum += charNum[i];
if (sum >= position) {
chatarea.append(text[i] + "\n");
break;
}
}
}
}
});
我想知道,是否有更简单的方法可以做到这一点。
提前谢谢了!
我想知道,是否有更简单的方法可以做到这一点。
这不是一个非常有效的解决方案,因为您每次都解析整个文档,随着文本区域中文本数量的增加,这种情况会变得更糟。
使用可利用文档结构的文本区域方法。就像是:
int line = textArea.getLineOfOffset( textArea.getCaretPosition() );
int start = textArea.getLineStartOffset( line );
int end = textArea.getLineEndOffset( line );
String text = textArea.getDocument().getText(start, end - start);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句