gpt4 book ai didi

java - 类转换异常 - tabbedpane.getComponentAt(index)

转载 作者:行者123 更新时间:2023-12-01 12:30:03 28 4
gpt4 key购买 nike

我正在尝试将选项卡 Pane 中的表数据导出到 Excel 文件中,但遇到此异常

javax.swing.JTable$1 cannot be cast to javax.swing.table.DefaultTableModel

尝试像这样转换输出

DefaultReportPanel panel = (DefaultReportPanel) this.tabbedPane.getComponentAt(i);

这是 DefaultReportPanel 的类

public class DefaultReportPanel extends JPanel {

JScrollPane scrollPane;
JTable table;

public DefaultReportPanel(){
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

this.scrollPane = new JScrollPane();
this.add(scrollPane);
}

public void setTable(String[] headers, Object[][] data){
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
this.table = new JTable(data, headers);
this.table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
this.scrollPane.setViewportView(this.table);
}

public DefaultTableModel getTableModel(){
return (DefaultTableModel) this.table.getModel();
}

这是我收到异常的方法

public LinkedHashMap<String, DefaultTableModel> getTableModels() {

LinkedHashMap<String, DefaultTableModel> models = new LinkedHashMap<String, DefaultTableModel>();

for(int i = 0; i < this.tabbedPane.getTabCount(); i++){
DefaultReportPanel panel = (DefaultReportPanel) this.tabbedPane.getComponentAt(i);
System.out.println(this.tabbedPane.getTitleAt(i));
if(panel != null)
{
models.put(this.tabbedPane.getTitleAt(i), panel.getTableModel());
}
}
return models;
}

对于缺少什么有什么想法吗?

最佳答案

我认为您对于异常发生位置的假设是不正确的。我认为这发生在这里:

public DefaultTableModel getTableModel(){
return (DefaultTableModel) this.table.getModel();
}

我为什么这么想?这是您要转换为 DefaultTableModel 的唯一位置(您已显示)。创建表时,您使用了 JTable 中的构造函数:

public JTable(final Object[][] rowData, final Object[] columnNames) {...}

它不会创建DefaultTableModel。它创建了 AbstractTableModel 的即时实现。

编辑:

为了避免 ClassCastException,一些选项是:

  1. 通过创建它来确保您的表具有 DefaultTableModel你自己,然后将其交给 JTable
  2. 转换为 AbstractTableModel
  3. 不要转换为任何内容,只使用 TableModel

答案(2)和(3)需要更改 LinkedHashMap 的类型

关于java - 类转换异常 - tabbedpane.getComponentAt(index),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004365/

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