解决方案 »

  1.   

    这应该不是java代码的问题吧,应该是前台的问题
      

  2.   

    js之类的,后台数据变化不会影响一个页面,所以要用js来实时刷新局部
      

  3.   

    因为这段代码是在UI线程里执行的,线程被阻塞,导致界面不能刷新,new 一个新线程执行这段代码
      

  4.   

    在setIcon之后加上paintComponents(getGraphics())刷新就可以了。还是感谢大家的回复
      

  5.   


    正解
    这个不对,至少没说清楚,楼主可以自己搜一下关于swing线程规则的知识
    楼主自己发现的这方法不对
    按你这方法,在图片刷新期间你整个程序的其他所有控件会像死机一样木有反应
      

  6.   

    回答楼主最初的问题: 方法有很多种,要注意线程安全。- 可以用第三方的动画库(推荐)
    - 可以用 javax.swing.Timer 来代替 for 循环(Timer 就相当于最精简的一个动画库)
    - 可以像 6 楼说的一样用线程,Runnable 里写 for 循环,但是 setIcon 的调用要在UI线程内完成,去查 SwingUtilities.invokeLater
    - 可以用 SwingWorker,与线程的方案相仿