2017-01-02 105 views
1

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

我怎么能填充的model

我试图

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

回答

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

谢谢,但问题是,我一个ActionListener内这样做,所以我得到的错误'语法错误,注解仅当源级别是1.5或greater',我无法访问以外定义的变量'this.table.setModel(new AbstractTableModel(){}' – Jamgreen

+1

第一个与'@ Override'属性有关的错误。你真的使用JDK小于1.5吗?第二个可以很容易修复:只需创建从'AbstractTableModel'继承的常规类并将数组传递给构造函数。 –

2

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

转换整型值的整数和数据添加到您的表的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); 
+0

如果我已经创建了我的JTable,但只想一次更改所有值,该怎么办? – Jamgreen

+0

然后,您只需使用'setModel(..)'方法更改表格的模型。或者使用'setRowCount(0)'从现有模型中删除所有行,然后每次添加一行。 – camickr