Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用整数数组填充JTable_Java_Arrays_Swing_Jtable - Fatal编程技术网

Java 用整数数组填充JTable

Java 用整数数组填充JTable,java,arrays,swing,jtable,Java,Arrays,Swing,Jtable,我有一个多维整数数组(int[][]model=new int[9][9])和一个表(JTable table=new JTable(9,9)) 如何使用模型的值填充表 我试过了 // Populate JTable with data from model for (int i=0; i<9; i++) { this.table = this.table.addRow(this.model[i]); } //使用模型中的数据填充JTable 对于(int i=0;i您可以创建自

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

如何使用
模型的值填充表

我试过了

// Populate JTable with data from model
for (int i=0; i<9; i++) {
    this.table = this.table.addRow(this.model[i]);
}
//使用模型中的数据填充JTable

对于(int i=0;i您可以创建自定义
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);
    }
}

您可以创建自定义
选项卡模型
,并直接从数组中读取值:

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);
    }
}

JTable
用于对象,而不是原语

将int值转换为整数,并将数据添加到表的
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);

JTable
用于对象,而不是原语

将int值转换为整数,并将数据添加到表的
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);

谢谢,但问题是我是在actionlistener中执行此操作的,因此我得到了错误
语法错误,注释仅在源代码级别为1.5或更高时可用,并且我无法访问在
this.table.setModel(new AbstractTableModel(){}之外定义的变量
第一个错误与
@Override
属性有关。你真的使用小于1.5的JDK吗?第二个问题可以很容易解决:只需创建继承自
AbstractTableModel
的常规类并将数组传递给构造函数。谢谢,但问题是我在actionlistener中执行此操作,因此我得到了错误
语法错误,一个只有当源代码级别为1.5或更高时,才可以使用注释,并且我无法访问在
this.table.setModel(new AbstractTableModel(){}之外定义的变量
第一个错误与
@Override
属性有关。你真的使用JDK小于1.5吗?第二个问题可以很容易解决:只需创建继承自
AbstractTableModel
的常规类,并将数组传递给构造函数。如果我已经创建了JTable,但只想一次更改所有值,那你只需更改模型使用
setModel(..)
方法删除表中的行。或者使用
setRowCount(0)从现有模型中删除所有行
然后您在每一行中一次添加一行。如果我已经创建了我的JTable,但只想一次更改所有值,该怎么办?然后您只需使用
setModel(…)
方法更改表的模型。或者使用
setRowCount(0)从现有模型中删除所有行
然后在每行中一次添加一个。