用多线程是可以啦,不过不用也能解决的。在JTextArea.setText(String);后面紧跟一个JTextArea.paintImmediately(int,int,int,int);或JTextArea.paintImmediately(Rectangle);就可以了,意思是立即重画指定矩形内的内容,如果实在不知道大小就JTextArea.paintImmediately(0,0,JTextArea.getSize().getWidth(),JTextArea.getSize().getHeight());只是刷新的效率就底一些。

解决方案 »

  1.   

    Swing 是单线程的, 不单是 Swing 其他很多 GUI 系统都设计成单线程为了避免混乱,和麻烦。 因为你的费时工作代码嵌入在 GUI 代码里面所以 GUI 在等待费时代码运行完毕后在做响应。你需要把这段费时代码移植到一个线程里面,当鼠标点击按钮时启动这个线程。注意做好多线程的同步和数据安全等工作,同时最好在 GUI 上提示用户当前状态(比如进度条)
      

  2.   

    狐狸还活着呢?不过估计早不记得偶了,呵呵,出来喘口气,bye~