nel*_*oro 143
您可以覆盖方法isCellEditable并根据需要实现,例如:
//instance table model
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
Run Code Online (Sandbox Code Playgroud)
要么
//instance table model
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//Only the third column
return column == 3;
}
};
table.setModel(tableModel);
Run Code Online (Sandbox Code Playgroud)
请注意JTable是否消失
如果你JTable
在使用它时消失了,很可能是因为你需要使用DefaultTableModel(Object[][] data, Object[] columnNames)
构造函数.
//instance table model
DefaultTableModel tableModel = new DefaultTableModel(data, columnNames) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
Run Code Online (Sandbox Code Playgroud)
Ole*_*lov 39
table.setDefaultEditor(Object.class, null);
Run Code Online (Sandbox Code Playgroud)
Sid*_*dhu 37
加上
table.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)
这对我来说可以.
JCa*_*sso 20
你可以使用TableModel
.
定义一个这样的类:
public class MyModel extends AbstractTableModel{
//not necessary
}
Run Code Online (Sandbox Code Playgroud)
实际上isCellEditable()
是false
默认情况下你可以省略它.(参见:http://docs.oracle.com/javase/6/docs/api/javax/swing/table/AbstractTableModel.html)
然后使用setModel()
你的方法JTable
.
JTable myTable = new JTable();
myTable.setModel(new MyModel());
Run Code Online (Sandbox Code Playgroud)
fre*_*oft 10
如果要从一组值自动创建TableModel(使用"new JTable(Vector,Vector)"),可能更容易从列中删除编辑器:
JTable table = new JTable(my_rows, my_header);
for (int c = 0; c < table.getColumnCount(); c++)
{
Class<?> col_class = table.getColumnClass(c);
table.setDefaultEditor(col_class, null); // remove editor
}
Run Code Online (Sandbox Code Playgroud)
没有编辑器,数据将无法编辑.