日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java jtable刷新_java-单击按钮更新JTable

發布時間:2023/11/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。