我希望不断跟踪JTextArea中输入的内容,因此每次用户输入内容时,我都希望在JTextArea中获取最后一个输入字符。
我能够提出整个工作计划。然而,我得到最后一个输入字符的方式是:
textArea.getText().charAt(textArea.getText().length()-1);
这样,我总是首先从JTextArea获取整个文本字符串。
我的问题是:有没有更好的方法让我在没有首先从JTextArea获取整个文本的情况下获取最后一个输入字符?
答案 0 :(得分:2)
您可以查询JTextArea
的任意部分:
Document doc = textArea.getDocument();
String lastCharAsString = doc.getText(doc.getLength() - 1, 1);
如果您甚至关心每次创建一个单字符String
,这可能是另一个甚至不创建String
实例的解决方案:
Segment seg = new Segment(); // can be reused
Document doc = textArea.getDocument();
doc.getText(doc.getLength() - 1, 1, seg);
char last = seg.last(); // equal to seg.first()
答案 1 :(得分:1)
如何使用DocumentListener? http://docs.oracle.com/javase/tutorial/uiswing/components/generaltext.html#doclisteners JTextArea的基础对象是Document。 因此,您可以捕获所需的更新事件,获取最后一个输入字符和 将其存储在变量中。 假设这就是你要找的东西。