【发布时间】:2016-11-12 12:34:12
【问题描述】:
有没有办法在JTable 上更新当前的DefaultTableModel?为了澄清我的意思,我将在下面使用一些代码示例。
你可以像这样声明一个 JTable
DefaultTableModel model = new DefaultTableModel(tableData, tableHeaders)
{
private static final long serialVersionUID = 8785594035471551113L;
@Override
public boolean isCellEditable(int row, int column)
{
return false;
}
};
JTable table = new JTable(model);
panel.add(table);
我在问是否有办法做类似的事情
myTable.java
public class myTable extends JTable {
private static final long serialVersionUID = -5819940358496590055L;
public myTable(TableModel dM) {
setModel(dM);
}
public myTable(Object[][] tableData, Object[] columnHeaders) {
this(new DefaultTableModel(tableData, columnHeaders));
}
public void setEditable(boolean b) {
DefaultTableModel model = (DefaultTableModel) this.getModel();
//Do some code here to make the editable or uneditable
setModel(model);
}
}
someJavaFile.java
JTable table = new myTable(tableData, tableHeaders);
table.setEditable(false);
panel.add(table);
我不是要你为我做这件事,而是要你帮助我找到一种方法来更新当前的DefaultTableModel。
感谢您的帮助
编辑澄清
我正在尝试找到一种方法来操作 JTable 上的当前DefaultTableModel,例如表格是否可编辑,因为没有方法支持在模型制作后切换表格是否可编辑.只有isCellEditable()。
为什么会有用?
如果您想在JButton 或类似的东西上使用ActionListener 操作表格的工作方式,这将很有用
【问题讨论】:
-
保留对当前
DefaultTableModel的引用。它具有更新它所需的所有方法。 -
@AndrewThompson 您能否对此进行扩展,因为没有
model.setEditable() -
你是想让某些单元格不可编辑还是什么?
-
我在this question 的代码上做了类似的事情,检查它是否适合你。它类似于@AndrewThompson 写的,但对于每一列
-
使建议适应@Frakcool 的想法,即让表格的一些 列可编辑。保留与表中列数相同大小的
boolean[] editable;。将setEditable(boolean)方法更改为setEditable(boolean, int)-boolean告诉是否使列可编辑,int指定列。然后更改isCellEditable()方法,从数组中获取boolean。