java吧 关注:1,304,681贴子:12,866,789
  • 10回复贴,共1

求助帖 程序运行时JList中内容动态显示过程中有时候消失的问题

只看楼主收藏回复

问题是这样的,我用java编了个界面,其中用到了JList这个组件,然后在程序运行中会一边运行,一边根据输入文件的内容在JList中显示对应的信息,我用的是和JList相关的DefaultListModel这个类的setModel方法来实现动态的往Jlist中添加信息
按照网上的说法应该没什么问题 但是在实际测试的时候会出现在运行过程中Jlist中的内容突然消失的情况,然后程序继续运行一段时间后又重新显示了出来。。其中的内容都还是存在的,程序运行到最后JList中结果也是可以显示,没啥问题,就是运行过程中这偶然消失一段时间的问题没法解决
已经被这个问题困扰2天了,求大神解救 能给点提示是哪方面出的问题也行(ps我也清楚EventQueue.invokeAndWait这个机制,但用了setmodel方法应该实现了动态显示的需求)


1楼2013-05-21 19:02回复
    求高人解惑!!!


    3楼2013-05-21 19:06
    回复
      2026-06-19 22:11:56
      广告
      不感兴趣
      开通SVIP免广告
      没人???顶上去


      4楼2013-05-21 19:27
      回复
        10到20分钟的任务是放在哪个线程里执行的?如果是放到awt线程里可能就把重绘JList的的操作给阻塞了


        IP属地:广西5楼2013-05-21 19:36
        收起回复
          来人啊 我现在怀疑是因为setmodel这个方法执行时在给JList添加内容的过程中,是先把JList里的内容清空再显示新的Model中的值,又因为我的新开的耗时进程是与awt界面线程平行的,所以在执行了清空操作后CPU又继续执行耗时进程,而没有来得及更新awt界面,所以导致内容消失了。。。不知道这个猜想对不对。。


          6楼2013-05-21 20:03
          收起回复
            好吧 已经弄清楚了 用invokeAndWait方法而不是invokelater方法,让界面显示完再回到耗时进程就OK了。这样就可以避免多线程之间转换阻塞而导致界面无法正常显示的问题了 话说是我问题表达的不清楚么 竟然没人回复。。伤心 还是谢谢 @zzb12 吧友的回复 看来编程这东西还得靠自己


            7楼2013-05-22 13:10
            收起回复