【发布时间】:2015-07-16 14:38:00
【问题描述】:
我正在制作一个简单的 GUI 来检查我的字符串拼写并希望连续显示文本,所以我在文本字段中写入的内容会不断更新文本区域,我为此使用了 Document 侦听器,但我遇到了一个问题无法通过我定义的字符串(如
)在文本区域中显示来自输入字段的文本String check = input.getText();
textarea.setText(check);
我想知道为什么它不起作用,但是我可以使用这种方法正常工作
//String check = input.getText();
textarea.setText(input.getText());
我想使用第一种方法来预处理我的字符串以进行拼写检查
帮我解决这个问题!
工作方法:
public void setText()
{
jTextArea1.setEditable(false);
input.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent de) {
jTextArea1.setText(input.getText());
}
@Override
public void removeUpdate(DocumentEvent de) {
jTextArea1.setText(input.getText());
}
@Override
public void changedUpdate(DocumentEvent de) {
//Plain text components don't fire these events.
}
});
}
非工作方法:
public void setText()
{
jTextArea1.setEditable(false);
String check = input.getText();
input.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent de) {
jTextArea1.setText(check);
}
@Override
public void removeUpdate(DocumentEvent de) {
jTextArea1.setText(check);
}
@Override
public void changedUpdate(DocumentEvent de) {
//Plain text components don't fire these events.
}
});
}
【问题讨论】:
-
应该没有区别。您是否尝试将
check设置在文档侦听器之外的其他位置? -
能否请您发布整个方法。正如 kiheru 所说,这应该可以正常工作。
-
是的,它似乎没有区别,但它只是没有显示我的文字:(我不知道为什么
-
有一个根本的区别:后一个版本在文档侦听器之外获取文本。该值不会改变,只是因为
getText()稍后会返回一个不同的值。字符串是不可变的,check一直引用与您最初设置的字符串相同的字符串。 -
我现在该怎么办?
标签: java swing listener documentlistener