首先实现TableModelListener(其实什么事也不用做,但是只有这样 JTable的数据显示才会更新)
class UserTableModelListener implements TableModelListener {  public UserTableModelListener() {
  }  public void tableChanged(TableModelEvent e) {
  }
}然后继承DefaultTableModel,让JTable不能编辑.
  class UserTableModel extends DefaultTableModel {
    public CustomTableModel(Object[][] data, Object[] colname) {
      super(data, colname);
    }    public boolean isCellEditable(int x, int y) {
      return false;
    }    public void addTableModelListener(UserTableModelListener l) {
      super.addTableModelListener(l);
    }
  }这是你的frame
public class YourApp extends JFrame 

   JTable ltable = null;
   JTable rtable = null;
   UserTableModel lmodel = null;
   UserTableModel rmodel = null;     public YourApp() {
    try {
      yourInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }  private void yourInit() throws Exception {
     Object[][] yourdata = yourdata;
     Object[][] zerodata = new Object[0][0];
     Object[] yourcolname  = yourcolname;
     lmodel = new UserTableModel(yourdata, yourcolname);     
     rmodel = new UserTableModel(zerodata, yourcolname);     
     ltable = new JTable(lmodel);
     rtable = new JTable(rmmodel);
       
     lmodel.addTableModelListener(new  UserTableModelListener());
     rmodel.addTableModelListener(new  UserTableModelListener());     JButton add = new JButton("add");
     add.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        actionPerformed(e);
      }
    });
  }  void actionPerformed(ActionEvent e) {
    int row = ltable.getSelectedRow();
    String[] data = new String[1];
    data[0] = (String)ltable.getValueAt(row, 0);
    lmodel.removeRow(row);
    rmodel.addRow(data);    
  }
}

解决方案 »

  1.   

    代码没有办法写了。说说思路好了。
    左边的jtable,当你选中的时候,你能得到所有被选中的行(所以可以几行一起到右边的jtable),
    来个循环,取的所有的行号及值(不要怀疑,我都做过),同时右边的jtable插入行,行的值就是你从左边取出来的值。
    呵呵,以你的功底一定很容易的。
              
      

  2.   

    to:lovesnoopy
    实在抱歉,编译花了不少时间,实在是我蠢,怎么也不成功.请问DefaultTableModel是什么,我查javaAPI,查不到.以下是出错的地点和内容:
    class UserTableModel extends DefaultTableModel {"YourApp.java": Error #: 300 : class DefaultTableModel not found in class dbdump.UserTableModel at line 26, column 32
      

  3.   

    DefaultTableModel是java 的 api!这一段有点问题:
    然后继承DefaultTableModel,让JTable不能编辑.
      class UserTableModel extends DefaultTableModel {
            ~~~~~~~~~~~~~~
        public CustomTableModel(Object[][] data, Object[] colname) {
               ~~~~~~~~~~~~~~~~
          super(data, colname);
        }    public boolean isCellEditable(int x, int y) {
          return false;
        }    public void addTableModelListener(UserTableModelListener l) {
          super.addTableModelListener(l);
        }  }类名和构造函数名不一样,是不是这个问题!?
      

  4.   

    sorry,原来的class叫CustomTableModel,copy后只改名,构造函数忘了改了。不好意思。
    to panq: import javax.swing.table.DefaultTableModel;
      

  5.   

    一切OK, 感谢lovesnoopy(洋葱头) 和rinehart(rinehart) 还有cming(白云蓝天)
    也感谢一切gz的朋友,一概有分.
     
    以下是我的调试程序.
    import javax.swing.*;
    import javax.swing.table.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;class UserTableModelListener implements TableModelListener {  public UserTableModelListener() {
      }  public void tableChanged(TableModelEvent e) {
      }
    }//然后继承DefaultTableModel,让JTable不能编辑.
      class UserTableModel extends DefaultTableModel  {
        public UserTableModel(Object[][] data, Object[] colname) {
          super(data, colname);
        }    public boolean isCellEditable(int x, int y) {
          return false;
        }    public void addTableModelListener(UserTableModelListener l) {
          super.addTableModelListener(l);
        }
      }//这是你的frame
    public class YourApp extends JFrame
    {
      JTable ltable = null;
      JTable rtable = null;
      UserTableModel lmodel = null;
      UserTableModel rmodel = null;  public YourApp() {
        try {
          yourInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }  private void yourInit() throws Exception {
        Object[][] yourdata = {{"one"},{"two"},{"third"},{"four"},{"five"},{"six"},{"OIUDSF"},{"SDFSD"},{"SDFSD"},{"SDF"},{"panq"}};
        Object[][] zerodata = new Object[0][0];
        Object[] yourcolname  = {"Table Name"};
        lmodel = new UserTableModel(yourdata, yourcolname);
        rmodel = new UserTableModel(zerodata, yourcolname);
        ltable = new JTable(lmodel);
        rtable = new JTable(rmodel);    JPanel contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(new FlowLayout());    lmodel.addTableModelListener(new  UserTableModelListener());
        rmodel.addTableModelListener(new  UserTableModelListener());    JButton add = new JButton("add");
        add.addActionListener(new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            add_actionPerformed(e);
          }
        });    contentPane.add(ltable);
        contentPane.add(add);
        contentPane.add(rtable);
      }  void add_actionPerformed(ActionEvent e) {
        int row = ltable.getSelectedRow();
        String[] data = new String[1];
        data[0] = (String)ltable.getValueAt(row, 0);
        lmodel.removeRow(row);
        rmodel.addRow(data);
      }  static public void main(String[] args) {
        YourApp newApp = new YourApp();
        newApp.setSize(500,500);
        newApp.show();
        try {
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }}