重载DefaultTableModel的isCellEditable方法,返回false即可。如下所示:
tblModel = new DefaultTableModel(data, aszHeaders) {
  public boolean isCellEditable(int row, int column) {
    return false;
  }
};
theTable = new JTable(tblModel);
这样创建出来的theTable是只读的。你还可以控制哪些单元格只读。

解决方案 »

  1.   

    可以用TableModel来控制,给你一个小例子import javax.swing.*;
    import javax.swing.table.*;public class TableDemo1 extends JFrame
    {
    private MyTableModel myTableModel = null; TableDemo1()
    {
    initTable();
    getContentPane().add(new JTable(myTableModel));
    setSize(300, 300);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    } private void initTable()
    {
    myTableModel = new MyTableModel();
    String[] sData = {"aaa", "bbb", "ccc"};
    myTableModel.addColumn("Column 1");
    myTableModel.addColumn("Column 2");
    myTableModel.addColumn("Column 3");
    myTableModel.addRow(sData);
    myTableModel.addRow(sData);
    } public static void main(String[] args)
    {
    new TableDemo1();
    } class MyTableModel extends DefaultTableModel//根据自己的需要覆盖某些方法
    {
    public boolean isCellEditable(int row, int column)
    {
    return false;
    }
    }
    }
    ----------------------
    简单的办法:jtable.setEnable(false);