有没有办法在jtable中动态制作不可编辑的单元格?每当用户给出输入像false,我想要使不可编辑的单元格…我已经看到在DefaultTableModel isCellEditable方法.但如果我想使用,我已经创建每一次新的对象.所以我想改变它不可动态编辑.你能帮助我吗?谢谢
解决方法
public class MyDefaultTableModel extends DefaultTableModel { private boolean[][] editable_cells; // 2d array to represent rows and columns private MyDefaultTableModel(int rows,int cols) { // constructor super(rows,cols); this.editable_cells = new boolean[rows][cols]; } @Override public boolean isCellEditable(int row,int column) { // custom isCellEditable function return this.editable_cells[row][column]; } public void setCellEditable(int row,int col,boolean value) { this.editable_cells[row][col] = value; // set cell true/false this.fireTableCellUpdated(row,col); } }
其他班
... stuff DefaultTableModel myModel = new MyDefaultTableModel(x,y); table.setModel(myModel); ... stuff
然后,您可以使用存储的myModel变量动态设置值,并在其上调用setCellEditable()函数.理论上.我没有测试这个代码,但它应该工作.您可能仍然需要触发某种事件来触发表格以注意到这些更改.