我在Java中做错了什么来获得这个IllegalArgumentException?

时间:2009-02-27 16:17:08

标签: java swing

我偶尔会在JTextArea中获得一个异常,我正在用JTextArea.append()更新...

java.lang.IllegalArgumentException: Invalid remove
    at javax.swing.JTextArea.replaceRange(Unknown Source)
    at sun.plugin.ConsoleWindow$24.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

是否有任何我可能做错的导致此异常的事情? javadoc建议该方法应该是线程安全的。

2 个答案:

答案 0 :(得分:2)

Document没有提供足够丰富的接口,无法以线程安全的方式使用。 JTextArea将在JDK7中删除一些线程安全声明。坚持在AWT事件调度线程(EDT)中更新Swing组件和Swing文本对象。

答案 1 :(得分:1)

在Swing中查看这个非常有用的工具来检查线程滥用:http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html