gpt4 book ai didi

java - 调用 getModel() 时 JTable 返回 JTable

转载 作者:行者123 更新时间:2023-12-01 07:22:01 32 4
gpt4 key购买 nike

我的 JTable 声明如下:

String[] cols = {"Name","Location"};
String[][] data = new String[][] {{"Name","Location"}};
JTable table = new JTable(data, cols);

所以我在尝试更新 JTable 的数据时遇到了问题...我应该向表中添加新行。这是我的代码:

data = new String[][] {{"Name","Location"}{"Name1","Location1"}};
DefaultTableModel dm = (DefaultTableModel)(table.getModel());
dm.fireTableDataChanged();

由于某种原因,我在线上遇到错误:

DefaultTableModel dm = (DefaultTableModel)(table.getModel());

显示的错误是...

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JTable$1 cannot be cast to javax.swing.table.DefaultTableModel
at client.pages.ClientPage.update(ClientPage.java:171)

我的 ClientPage.java 的第 171 行是上面我所说的错误所在的代码行。

有人知道为什么这样做吗?

table.getModel(); //Suppose to return TabelModel not JTable

最佳答案

table.getModel() 不返回 JTable,它返回 anonymous class在扩展 TableModelJTable 中。因此,table.getModel() 确实返回了正确的类类型。

但是,会发生错误,因为您尝试将此匿名表模型转换为 DefaultTableModel,它是 TableModel 的另一个子类,但不是由table.getModel().

要解决此问题,只需将表模型视为接口(interface)类型 TableModel 即可;不要假设它是 DefaultTableModel

关于java - 调用 getModel() 时 JTable 返回 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34033162/

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