java - 在 JTable 中显示 arrayList 的 arrayList

标签 java swing arraylist jtable

我有一个数组列表,数组列表的每个元素都包含一个小的数据数组列表。

我需要根据这些数据创建一个表。您建议解决此问题的最佳途径是什么?

预先感谢您的帮助

最佳答案

参见How to create a Table Model

一个小示例,展示如何创建模型并将对象存储在模型中。对数据的任何操作都应该使用模型来完成。

创建模型并使用列表来存储该表的数据。如下例所示。表中的每一行都是一个 Student 对象,每个对象都存储在列表中。遍历列表并获取每个对象并显示在表中。这是使用 getValueAt(..) 方法完成的。

JTable Model Example

import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;


public class JTableList {
    public static void main(String[] args) {

        Runnable r = new Runnable() {

            @Override
            public void run() {
                CustomModel model = new CustomModel();
                JTable table = new JTable();
                table.setModel(model);

                JFrame frame = new JFrame();
                frame.add(new JScrollPane(table));
                frame.pack();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);             
            }
        };

        EventQueue.invokeLater(r);
    }

}

class CustomModel extends AbstractTableModel {

    List<Student> data;
    String[] columnNames = {"Name", "Age"};

    public CustomModel() {
        data = new ArrayList<Student>();

        data.add(new Student("Amar", 1));
        data.add(new Student("Sam", 2));
        data.add(new Student("Amar", 1));
        data.add(new Student("Sam", 2));
        data.add(new Student("Amar", 1));
        data.add(new Student("Sam", 2));


    }

    @Override
    public String getColumnName(int column) {
        return columnNames[column];
    }

    @Override
    public int getColumnCount() {
        return 2;
    }

    @Override
    public int getRowCount() {
        return data.size();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        Student student = data.get(rowIndex);
        switch (columnIndex) {
        case 0:
            return student.getName();
        case 1:
            return student.getAge();
        default:
            return null;
        }
    }

}

class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

关于java - 在 JTable 中显示 arrayList 的 arrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14753408/

相关文章:

java - 如何打印精确的浮点 double 值

java - 比较两个复杂的字符串数组列表

Java 按唯一索引号对值进行排序

java - 网站不加载资源

java - 在 Android 中使用 Graph API 在 Facebook 上直播视频

java - 如何创建表 postgresql Heroku?

swing - 如何制作自己的 Scala UI 事件

java - 为什么我的 Java 程序会创建无限多个窗口? (使用线程和 NO WHILE 循环)

java - 在java中显示图像

java - 了解 ArrayList 的 concurrentModificationException 和实现