首页 > 解决方案 > 如何从多个 ArrayList 中创建 JTable?

问题描述

ArrayList<String> mediaCompany = new ArrayList<String>();
ArrayList<Double> rank = new ArrayList<Double>();

// SAMPLE CODE
static void displayTable(ArrayList<String> mediaCompany, ArrayList<Double> rank) {

        // ADD TABLE
        String [] columnNames = {"Media Platform", "Ranking"};
        DefaultTableModel model = new DefaultTableModel(columnNames, 0);
        JTable table = new JTable(model);

        for (int i = 0; i < mediaCompany.size(); i++) {
            Object[] row = {mediaCompany.get(i), rank.get(i)};
            model.addRow(row);
        }

    }

所以我对 Java 还很陌生,想了解如何创建一个表格,其中 someStringX 的元素显示在列中,x 显示在控制台上的行中,这样:

一些字符串X X 的值
一些字符串X x1
一些字符串X2 x2
一些字符串X3 x3
一些字符串X4 x4
... ...

示例:mediaCompany = [Facebook、谷歌、Twitter]

排名 = [4, 7, 2]

媒体公司
Facebook 4
谷歌 7
推特 2

到目前为止,尽管导入了适当的包,我仍然无法启动并运行 JTable。

标签: javaswingarraylistjtable

解决方案


这是一个示例代码,可以满足您的需要:

public static void main(String[] args) {
    List<String> mediaCompany = List.of("Facebook", "Google", "Twitter");
    List<Integer> rank = List.of(4, 7, 2);

    DefaultTableModel model = populateTableModel(mediaCompany, rank);
    createTable(model);
}

static DefaultTableModel populateTableModel(List<String> mediaCompany, List<Integer> rank) {
    String[] columnNames = { "Media Platform", "Ranking" };
    DefaultTableModel model = new DefaultTableModel(columnNames, 0);

    for (int i = 0; i < mediaCompany.size(); i++) {
        Object[] row = { mediaCompany.get(i), rank.get(i) };
        model.addRow(row);
    }

    return model;
}

static void createTable(DefaultTableModel model) {
    JFrame jFrame = new JFrame();
    JTable jTable = new JTable(model);
    JScrollPane sp = new JScrollPane(jTable);
    jFrame.add(sp);
    jFrame.setSize(300, 400);
    jFrame.setVisible(true);
}

我使用“List.of”来填充列表,这是 Java 9 的一项功能,您可以通过任何其他方式填充它们。

populateTableModel() 方法负责检索已填充所有列名和行的 DefaultTableModel。

createTable() 方法将实际生成表。


推荐阅读