我看到的使用刷新JTable中相當多的線程:刷新JTable中的所有數據
String[] columnNames = {"column1","column2,......,"columnN"};
String[][] tableData = new String[1][columnNames.length];
JTable table = new JTable(tableData,columnNames);
JScrollPane scrollpane = new JScrollPane(table);
contentPane.add(scrollpane);
......做出改變存儲在tableData
然後調用數據...
AbstractTableModel model = (AbstractTableModel) table.getModel();
model.fireTableDataChanged();
但這似乎並沒有改變我的任何東西。我需要最初顯示一行空白表格,然後在用戶加載數據文件時更新它,但下面的代碼似乎不適用於我。我假設它是因爲即時重新定義tableData
,但是這必須完成,因爲我不知道在用戶加載文件之前要顯示多少行數據。我如何更新表格?
編輯: 這樣可以很清楚我運行的代碼是:
//Initialize Table With 1 Blank Row
String[] columnNames = {"column1","column2,......,"columnN"};
String[][] tableData = new String[1][columnNames.length];
JTable table = new JTable(tableData,columnNames);
JScrollPane scrollpane = new JScrollPane(table);
contentPane.add(scrollpane);
//When the file is loaded resize tableData so it can fit all the file data
tableData = new String[length of data file][columnNames.length];
//Update some of the tableData points
tableData[0][0]="data 1";
tableData[1][0]="data 2";
tableData[0][1]="data 3";
tableData[1][1]="data 4";
....etc
//Tell the JTable to update
AbstractTableModel model = (AbstractTableModel) table.getModel();
model.fireTableDataChanged();
將代碼發佈到更新表模型的位置。 – Makky
@Makky我發佈了更新tableData的代碼。然後我調用model.fireTableDataChanged(),但沒有任何變化。 – Edd
你不應該直接調用fireXXX方法。這是TableModel的責任。 – camickr