【发布时间】:2012-05-16 01:59:23
【问题描述】:
我创建了一个 JTextField 并使用来自 PlainDocument 的扩展类设置 setDocument 属性。
当我从文本框中擦除时,我想打印剩余的字符串,但它只打印了一步。
让我们说。如果 JTextField 有一个像 123456789 这样的字符串,并且我用退格键擦除了一个字符,那么它会打印 ok (12345678)。但如果我删除让我们说“3”,那么它会显示“1234567”。所以我打印了一个以前的值。如果我然后删除另一个字符,那么它将显示 3 已被删除。 .只是它知道长度发生了变化,并在后面少打印了一个字符。
如果我没有说清楚。我想打印从 plainDocument 代码中删除时文本字段具有的“真实”字符串。
当我删除它时,它会触发删除或 removeupdate 方法,当我的文本被打印时。 (可能我提前一步打印)
PS:我必须从纯文档中获取值,而不是从外部的 jtextfield 中获取值。
这是我的代码
protected void removeUpdate(AbstractDocument.DefaultDocumentEvent evento)
{
try {
super.removeUpdate(evento);
removePostUpdate(evento);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected void removePostUpdate(AbstractDocument.DefaultDocumentEvent evento) throws BadLocationException
{
try {
palabraCompleta = evento.getDocument().getDefaultRootElement().getDocument().getText(0,evento.getDocument().getDefaultRootElement().getDocument().getLength()-1 );
System.out.println(evento.getPresentationName());
} catch (BadLocationException e) {
e.printStackTrace();
}
System.out.println(palabraCompleta);
}
【问题讨论】:
-
无法编译此代码。这应该是 JTextField 的子类吗?此外,在 removePostUpdate palabraCompleta 中未定义。
-
我只是粘贴重要部分... String palabraCompleta;是扩展plaindocument 的类的公共变量。我只粘贴了删除时触发的两种方法。
标签: java swing events jtextfield documentlistener