gpt4 book ai didi

java - JTable重新加载数据

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:53 25 4
gpt4 key购买 nike

我的代码中有以下 JTable:

String[] columnNames = {"Name", "Category", "Seller", "Sell Price", "Current Bid", "End Date", "Open"};
Object[][] data = GetAuctionTableData();
final JTable AuctionTable = new JTable(data, columnNames);

我在表单上还有一个按钮,希望通过单击该按钮将数据重新加载到表中。我该怎么做呢?我需要使用 AbstractTableModel 吗?

编辑

这是按钮的代码:

    RefreshAuctionButton.addActionListener(new ActionListener() {  
public void actionPerformed(ActionEvent e)
{
Object[][] data = GetAuctionTableData();
AuctionTable = new JTable(data, columnNames);
}});

此代码不起作用,因为 JTable 被声明为最终的。我目前将其作为最终版本,因为它是从内部类(按钮,如上所述)访问的。

最佳答案

这取决于您希望按钮对表格进行哪些更改。

  • 如果按钮只是触发data内对象的更新,那么你只需要使用 AuctionTable.update (或类似的东西)。

  • 如果它触发插入,那么仅添加要直接插入到 AuctionTable 的行。使用((DefaultTableModel) AuctionTable.getModel).addRow(...);

  • 如果它触发删除,那么您只需要该索引要删除的行。使用 ((DefaultTableModel)
    AuctionTable.getModel).removeRow(...);

否则,我需要有关按钮操作的更多信息,或者您可以在每次按下按钮时调用 GetAuctionTableData() 以重新加载整个 JTable 的信息(这可能根本不需要)。

编辑

要重新加载全部内容,同时保留 AuctionTablefinal 修饰符,请使用 setDataVector 方法,而不是在按钮的操作监听器中重新设置表格。

RefreshAuctionButton.addActionListener(new ActionListener() {  
public void actionPerformed(ActionEvent e)
{
Object[][] data = GetAuctionTableData();
((DefaultTableModel) AuctionTable.getModel()).setDataVector(data, columnNames);
}
});

不过,您还必须将 columnNames 设置为 final

关于java - JTable重新加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16534332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com