使用整数数组填充JTable

时间:2017-01-02 18:04:18

标签: java arrays swing jtable

我有一个多维数组的整数(int[][] model = new int[9][9])和一个表(JTable table = new JTable(9, 9)

如何使用model

的值填充表格

我试过了

// Populate JTable with data from model
for (int i=0; i<9; i++) {
    this.table = this.table.addRow(this.model[i]);
}

2 个答案:

答案 0 :(得分:2)

您可以直接从数组创建自定义TabelModel并读取值:

package com.company;

import javax.swing.*;
import javax.swing.table.AbstractTableModel;

public class Main {
    public static void main(String[] args) {
        JTable table = new JTable(3, 3);

        final int[][] values = new int[][] {
            {1,2,3},
            {2,3,4},
            {3,4,5},
        };

        table.setModel(new AbstractTableModel() {
            @Override
            public int getRowCount() {
                return 3;
            }

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

            @Override
            public Object getValueAt(int rowIndex, int columnIndex) {
                return values[rowIndex][columnIndex];
            }
        });

        JFrame frame = new JFrame();
        frame.getContentPane().add(table);
        frame.pack();
        frame.setVisible(true);
    }
}

答案 1 :(得分:2)

JTable适用于对象,而不是基元。

将int值转换为Integer并将数据添加到表的DefaultTableModel

所以基本代码可能是这样的:

int[][] values = new int[][]
{
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12},
};

int columns = values[0].length;

DefaultTableModel model = new DefaultTableModel(0, columns)
{
    @Override
    public Class getColumnClass(int column)
    {
        return Integer.class; // number will be displayed right aligned
    }
};

for (int i = 0; i < values.length; i++)
{
    int[] rowData = values[i];
    Vector<Object> row = new Vector<Object>(columns);

    for (int j = 0; j < rowData.length; j++)
        row.addElement( new Integer( rowData[j] ) );

    model.addRow( row );
}

JTable table = new JTable(model);
  

我有一个多维数组的整数

另一种选择可能是在Object数组中创建数据,然后你可以这样做:

String[] columnNames = {"A", "B", "C", "D"};
DefaultTableModel model = new DefaultTableModel()
{
    @Override
    public Class getColumnClass(int column)
    {
        return Integer.class;
    }
};
model.setDataVector(values, columnNames);

JTable table = new JTable(model);