TO:shuneng() 
能说详细点吗?

解决方案 »

  1.   

    为什么要每次setModel(...)?
    很浪费资源的.你修改model的数据,然后updateUI()就可以了.
      

  2.   

    TO:maowu(猫呜) 
    这个updateUI()是那的方法?如何用?谢谢!
      

  3.   

    这是的的TableModel,因为Object[][]的构造是在构造函数中完成的所以每次更新数据后都只能产生新的TableModel
    class jTable1DataModel extends AbstractTableModel{
            Object[][] p={{"","","","","","","","",""}};
            String[] n={"区域","位号","开关状态","相电压","线电流"," Q "," P "," W ","保护定值"};
            
            public jTable1DataModel(){
                synchronized(dco){
                    if(dco != null){
                        p=new Object[DBconnection.inti][n.length];
                        int pinti=0;
                        
                        Set set=dco.entrySet();
                        Iterator i=set.iterator();
                        while(i.hasNext()){
                            Map.Entry me=(Map.Entry)i.next();
                            HashMap hashmap=(HashMap)me.getValue();
                            Set set1=hashmap.entrySet();
                            Iterator i1=set1.iterator();
                            while(i1.hasNext()){
                                Map.Entry me1=(Map.Entry)i1.next();
                                DataCell datacell=(DataCell)me1.getValue();
                                Object[] oatmp={datacell.getQuyu(), datacell.getName(), datacell.getKaiguan(), datacell.getV(), datacell.getI(),
                                datacell.getQ(), datacell.getP(), datacell.getW(), datacell.getBaohudingzhi()};
                                p[pinti++]=oatmp;
                            }
                            
                        }
                    }
                }
                
            }
            public int getColumnCount() {
                return n.length;
            }
            
            public int getRowCount() {
                return p.length;
            }
            public String getColumnName(int col){
                return n[col];
            }
            
            public Object getValueAt(int rowIndex, int columnIndex) {
                return p[rowIndex][columnIndex];
            }
      

  4.   

    你就把它拿出来把,不要把太多的事情放到构造方法里做.
    比如你可以在TableModel里增加一个pubic void requery(){}方法,每次要从新
    查询数据的时候调用.
    把你放在构造方法里的那些东西放到requery()里去.
    jtable就有一个updateUI();方法,可以更新的你jtable的显示.
    因为你的TableModel的数据改变了的时候可能JTable还不知道.(写得好的TableModel应该具有这种功能.)
      

  5.   

    TO:maowu(猫呜)
    谢谢!你的方法不错!搞定了!