Devi estendere DefaultTableModel e fare l'override di isCellEditable... per esempio:
codice:
import javax.swing.*;
import javax.swing.table.*;
/**
*
* @author Andrea
*/
public class NonEditableJTable extends JFrame {
private class MyTableModel extends DefaultTableModel {
public boolean isCellEditable(int row, int col) {
return false;
}
public MyTableModel(Object[][] elem, Object[] header) {
super(elem, header);
}
}
private Object[][] contents;
private Object[] header;
private JTable table;
/** Creates a new instance of NonEditableJTable */
public NonEditableJTable() {
super("JTable Model");
this.setSize(500,300);
this.contents = new Object[3][5];
for (int i = 0; i < contents.length; i++) {
for (int j = 0; j < contents[i].length; j++) {
contents[i][j] = new Integer(i*j);
}
}
this.header = new Object[] {"uno", "due", "tre", "quattro", "cinque"};
this.table = new JTable(new MyTableModel(contents, header));
JScrollPane scrollpane = new JScrollPane(table);
this.getContentPane().add(scrollpane);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new NonEditableJTable();
}
}