JTextField 侦听文本改变时间,出现:java.lang.IllegalStateException: Attempt to mutate in notification异常,帮帮我,急死了!

mengxi26 2005-03-11 10:02:39
a=new JTextField();下面是它的侦听事件
a.getDocument()事件

public void insertUpdate(DocumentEvent e)
{
if(e.getDocument()==a.getDocument())
{
if(a.getText().length()==3)
{a.setText("ddd");}
else
tf.setText("null");
}

}

却出现java.lang.IllegalStateException: Attempt to mutate in notification
错误,请问问什么?
我就是想使得JTextField像TextField一样能够侦听文本的改变,为什么出现了这种异常?请问如何处理?谢谢!
...全文
551 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yagumo 2005-03-14
  • 打赏
  • 举报
回复
观注
mengxi26 2005-03-14
  • 打赏
  • 举报
回复
那么该如何解决这个问题呢?谢谢!
hpy121 2005-03-11
  • 打赏
  • 举报
回复
想侦听文本的改变应用
public void insertString(int offs, String str, AttributeSet a)
方法!

insertUpdate 时text已经write lock,所以你setText就会出错!
晨星 2005-03-11
  • 打赏
  • 举报
回复
是啊,如果允许,诊听时改变通常的结果就是无限递归。因为改变了,就调用诊听事件,而诊听事件有改变文档,于是又调用诊听事件,于是又改变文档。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧