String[] name={
      "x","y"
    };
   int  value=1;
    String[][] data=new String[2][2];
    for(int i=0;i<data.length ;i++){
      for(int j=0;j<data[ i].length ;j++){
        data[i][j]=String.valueOf(value++);
      }
      }      dataModel=new DefaultTableModel(data,name);
  JFrame f=new JFrame();    table1 = new JTable(dataModel);//如果你是这样的话,两个表
    table2=new JTable(dataModel);//共用一个dataModel当然不行,两个表响应事件发生改变等都是依靠dataModel。要想两个表格不同时改变,就做两个dataModel   dataModel1=new DefaultTableModel(data,name);
   dataMode2=new DefaultTableModel(data,name);
 table1 = new JTable(dataModel1) ;   table2=new JTable(dataModel2);

解决方案 »

  1.   

    我随便写的,你运行一下
    package xxx;
    import java.util.*;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.table.DefaultTableModel;
    public class tmp {
      DefaultTableModel dataModel;
      DefaultTableModel dataModel2;
      JTable table1;
      JTable table2;
      JScrollPane s;
      JScrollPane s2;
      public tmp() {
        String[] name={
          "x","y"
        };
       int  value=1;
        String[][] data=new String[2][2];
        for(int i=0;i<data.length ;i++){
          for(int j=0;j<data[ i].length ;j++){
            data[i][j]=String.valueOf(value++);
          }
          }      dataModel=new DefaultTableModel(data,name);
        dataModel2=new DefaultTableModel(data,name);    JFrame f=new JFrame();    table1 = new JTable(dataModel);
        table2=new JTable(dataModel2);
         s = new JScrollPane(table1);
         s2 = new JScrollPane(table2);
         JPanel p=new JPanel();
         JButton b=new JButton("addarrow");     b.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent e){
             dataModel.addRow(new Vector()) ;
           }
         });
         p.add(b ) ;
       f.  setBounds(0,0,400,400);
    f.getContentPane() .add(s,BorderLayout.WEST );
        f.getContentPane() .add(p,BorderLayout.SOUTH    );
        f.getContentPane() .add(s2,BorderLayout.NORTH  );
        f.setVisible(true);
        f.pack() ;
      }
    public static void main(String[] args) {
      new tmp();
    }
    }
      

  2.   

    to  eci0(eci0):问题找到了,我确实是new 的不同的DataModel但是扩展的时候不知怎么的把data前加了一个static。一个最弱智的错误,不过还是要谢谢你。接分吧:)