大家有没有做过类似的东西,在 JTable 中读入数据列表(List),启动线程(每行一个线程) 对行数据进行处理, 处理结果实时在 Jtable 中更新(如‘处理中’,'登录中..','处理完成')望指教,对Jtable和多线程的结合不了解,谢谢。

解决方案 »

  1.   

    swing是單線程,你這個應該是單元格的數據準備階段需要耗時的吧,數據未完備前在相應單元格設對應狀態,數據的處理分別在不同線程中
      

  2.   


    不,数据载入,这不用考虑,用 SwingWorker 就可以了问题是,Jtable 上的数据绑定如何实现,比如我的某一行某个属性变化了,要让Jtable也随之变化,有什么api可以支持到。
      

  3.   

    你是说model层变化了,如何联动到view层,这个观察者模式JTable内部应该都有实现,有诸如addTableModelListener之类来注册关系,找一下就有
      

  4.   


    这确实需要一番仔细研究,JTable 有点神秘,虽说入门控制表格还是不难。真正驾驭它,还需时日。各位,有什么好资料分享,不要吝啬!
      

  5.   

    编写代码时候尽量少写类,在命名常量时候把所属的方法定义好。
    比方:String s=new String("String");
         你最好写成:
          String s;
         s=new String ("String");
                                                      
      

  6.   

    你继承一个AbstractTableModel,当你修改了model中的数据的时候,view层是可以自动刷新的,你需要做的就是修改model中相关单元格的内容,这个一点都不难的。jtable可能是swing中最难用的一个组件了。你不能用vb的思想来考虑问题,完全要从oo的思想来使用jtable及其相关东西。
      

  7.   

    注意,修改model的内容,最好放在事件队列中,否则,可能更新会不及时。要把修改的代码放在 SwingUtilities.invokeAndWait()里执行
      

  8.   

    处理结果变化时调用: YourTableModel.fireTableDataChanged();用TableModelListener来handle 变化并在tableChanged里面调用YourTableModelInstance.setValueAt()更新table中相应列YourTableModelInstance.addTableModelListener(new javax.swing.event.TableModelListener() {
                public void tableChanged(TableModelEvent e) {
                   YourTableModelInstance.setValueAt()
                }
            });