首页 > 解决方案 > 从 ArrayList 填充的 JTable

问题描述

我想要做的是JTableArrayList.

数组列表是Record我在下面定义的类型:

public class Record {

    int Parameter_ID;
    int NDC_Claims;
    int NDC_SUM_Claims;

    public Record(int parameter, int claims, int ndc_sum_claims){
        Parameter_ID = parameter;
        NDC_Claims = claims;
        NDC_SUM_Claims = ndc_sum_claims;

    }

    public Record() {
        // TODO Auto-generated constructor stub
    }

我也不知道如何用列标题填充表格。这是我到目前为止所拥有的:

DefaultListModel listmodel = new DefaultListModel();
ArrayList<Record> test = new ArrayList<Record>();
DefaultTableModel modelT = new DefaultTableModel();
    Object data1[] = new Object[3];

    for(int i=0;  i<test.size();i++){
        data1[0] = test.get(i).Parameter_ID;
        data1[1] = test.get(i).NDC_SUM_Claims;
        data1[2] = test.get(i).NDC_Claims;
        modelT.addRow(data1);
    }

table_1 = new JTable(modelT, columnNames);
contentPane.add(table_1, BorderLayout.CENTER);
contentPane.add(table_1.getTableHeader(), BorderLayout.NORTH);

什么都没有输出。任何帮助都会很棒!

标签: javaswingarraylistjtabledefaulttablemodel

解决方案


那么你需要从阅读 API 开始。如果您不先阅读 API,您将无法编程。

DefaultTableModel modelT = new DefaultTableModel();

当您阅读 API 时,该构造函数做了什么?它创建一个具有 0 行和 0 列的模型。您将要创建一个具有 3 列和 0 行的模型,以便您可以将数据行添加到模型中。阅读 DefaultTableModel API

table_1 = new JTable(modelT, columnNames);

那句话有什么作用?我没有看到允许您指定模型和列名的构造函数,因此您的代码如何编译。您只想使用模型创建表。

contentPane.add(table_1, BorderLayout.CENTER);
contentPane.add(table_1.getTableHeader(), BorderLayout.NORTH);

该表应添加到 JScrollPane 的视口中。然后标题将显示为滚动窗格的列标题。

阅读 JTable API。该 API 还包含一个指向 Swing 教程的链接,How to Use Tables您需要阅读以了解基础知识。

ArrayList<Record> test = new ArrayList<Record>();

您创建一个空的 ArrayList。那么,当您遍历循环时,您期望会发生什么?如果 ArrayList 中没有数据,如何向模型添加数据?

此外,您是否在论坛/网络上搜索了使用 DefaultTableModel 或 JTable 类的示例。这些示例将帮助您编写代码。


推荐阅读