2016-07-10 128 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