java - 将数据添加到 JTable 部分代码,转换问题

标签 java swing jtable defaulttablemodel

我正在尝试在已创建的表中输入一行,我在此网站中找到了解决方案,但它对我不起作用。我提取了“JTable 部分代码”并创建了一个新类,如下所示:

public static void main(String[] args) {
    String[] columnToken = {"No. consecutivo", "Token", "Lexema", "No. de linea"};
    String[] columnError = {"No. consecutivo", "Error", "No. de linea"};

    Object[][] datac1= {};
    Object[][] datac2= {};

    JTable tabTokens = new JTable(datac1, columnToken);
    JTable tabError = new JTable(datac2, columnError);

    JFrame frameTokens = new JFrame("JTable Tokens Display");
    JFrame frameError = new JFrame("JTable Errors Display");

    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());

    JScrollPane tokenTabContainer = new JScrollPane(tabTokens);
    JScrollPane errorTabContainer = new JScrollPane(tabError);

    panel.add(tokenTabContainer, BorderLayout.CENTER);
    frameTokens.getContentPane().add(panel);

    panel.add(errorTabContainer, BorderLayout.CENTER);
    frameError.getContentPane().add(panel);

    for(int i=0; i<4; i++) {
        DefaultTableModel token100 = (DefaultTableModel) tabTokens.getModel();
        token100.addRow(new Object[]{"Hola", 100, 196, "adios"});

        DefaultTableModel token101 = (DefaultTableModel) tabTokens.getModel();
        token101.addRow(new Object[]{"Hola", 100, 196, "adios"});

        DefaultTableModel token102 = (DefaultTableModel) tabTokens.getModel();
        token102.addRow(new Object[]{"Hola", 100, 196, "adios"});
    }

    frameTokens.pack();
    frameTokens.setVisible(true);
    //frameError.pack();
    //frameError.setVisible(true);
}

}

出现的错误是下一个:

线程“main”中的异常java.lang.ClassCastException:javax.swing.JTable$1无法转换为javax.swing.table.DefaultTableModel

我知道这是一个类型转换问题,但这是我在互联网上找到的唯一解决方案。 我需要在一个周期内多次输入数据,所以我不知道另一种“输入设计”,有人可以帮助我吗? 谢谢!

最佳答案

JTable tabTokens = new JTable(datac1, columnToken);

当您使用两个数组创建表时,JTable 使用内部类作为 TableModel,而不是 DefaultTableModel。

如果您想使用DefaultTableModel,则代码应如下所示:

DefaultTableModel model = new DefaultTableModel(data, column);
JTable table = new JTable( model );

现在,当您访问 JTableTableModel 时,它将是 DefaultTableModel 并且您可以使用 addRow(.. .) 方法。

关于java - 将数据添加到 JTable 部分代码,转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40090754/

相关文章:

Java,大型 GUI 类,带有许多 ActionListeners;组织听众的最佳方式?

java - 对于 JTable 的一列,如何在每一行中放置一个唯一的组合框编辑器?

java - Eclipse 4 - 将部分添加到 SashForm

java - 如何获得比特率,采样率和没有。 android中音频文件的 channel 数

java - 具有多个图像的 Jpanel - 内存使用情况

java - 如何使 JPanel 在移动时显示在另一个 JPanel 上?

java - 循环双向链表

java - 编辑正在运行的java程序的变量

Java swing 边框和 Boxlayout

java - 为什么我的 JTable 不允许我插入 ImageIcon?