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