2017-01-02 132 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