2016-07-10 79 views
0

有没有办法更新JTable上的当前DefaultTableModel?为了澄清我的意思,我将在下面使用一些代码示例。更新当前JTable模型

,如果有一种方法可以做到类似这样

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东西,你可能会宣布一个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); 

我问.java

JTable table = new myTable(tableData, tableHeaders); 
table.setEditable(false); 
panel.add(table); 

我不是要求你为我做这件事,而是我要求你帮助我找到一种方法更新当前DefaultTableModel

我感谢所有帮助

编辑澄清

我试图找到一种方式来操作当前DefaultTableModel上JTable中的东西,如表是否可编辑或不作为有没有支持切换表格是否可以在模型制作后编辑的方法。只有isCellEditable()

为什么这会有用?

如果你想操作表上的ActionListener的工作方式这将是有用的一个JButton或类似的东西

+0

保留对当前'DefaultTableModel'的引用。它有你需要更新的所有方法。 –

+0

@AndrewThompson你可以扩展它对于这个具体的例子有什么帮助,因为没有'model.setEditable()' – Dan

+0

你想让一些单元格不可编辑或者什么? – Frakcool

回答

2

的东西,如因为没有方法在表中是否可编辑与否支持在模型制作后切换表格是否可编辑

您将需要提供自定义TableModel。您可以通过扩展模型和添加几个方法将此功能构建到DefaultTableModel中。您可以查看Row Table Model

其他功能可让您将整个模型编辑或不编辑。您还可以控制单个列是否可编辑。

+0

谢谢。这给了我一个开始的地方:) – Dan