java jtable刷新_java-单击按钮更新JTable
I have searched on stackoverflow and a couple of people have said to use that method.
不,您不應在TableModel本身的上下文之外調用任何fireTableXxx方法,否則人們會認為這完全是錯誤的,將來會給您帶來麻煩.從代碼的外觀來看,什么都沒有改變.如果您已根據上一個問題中提供的答案更新了TableModel,則該模型中的數據與外部源沒有任何關系.您需要從外部源手動重新加載數據,創建新的TableModel并將其應用于表
例如…
JButton btnRefreshAllPlayers = new JButton("Refresh");
btnRefreshAllPlayers.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
TableModel model = new PlayerTableModel(FileHandler.getCompletedPlayers());
table.setModel(model);
}
});
I have also tried setting a new model with the updated ArrayList and it worked but did not keep the table row widths I previously set.
對于表來說這是合理的事情,因為它不知道新模型是否具有與舊模型相同的屬性/列,因此將其重置.
您可以遍歷ColumnModel,在應用模型并重新應用寬度之前將列的寬度存儲在List或Map中
Is there a proper way to update the JTable?
您可以為TableModel提供刷新方法,該方法可以加載數據本身并觸發tableDataChanged事件
public class PlayerTableModel extends AbstractTableModel {
private final List summaries;
public PlayerTableModel(List summaries) {
this.summaries = new ArrayList(summaries);
}
// Other TabelModel methods...
public void refresh() {
summaries = new ArrayList<>(FileHandler.getCompletedPlayers());
fireTableDataChanged();
}
}
然后,您需要在ActionListener中調用此方法…
PlayerTableModel model = (PlayerTableModel)table.getMode();
model.refresh();
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java jtable刷新_java-单击按钮更新JTable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python歌星大奖赛_在歌星大奖赛中,
- 下一篇: 使用宝塔部署node项目_使用宝塔面板进