我有一個整數(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]);
}
我有一個整數(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]);
}
您可以創建自定義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);
}
}
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);
謝謝,但問題是,我一個ActionListener內這樣做,所以我得到的錯誤'語法錯誤,註解僅當源級別是1.5或greater',我無法訪問以外定義的變量'this.table.setModel(new AbstractTableModel(){}' – Jamgreen
第一個與'@ Override'屬性有關的錯誤。你真的使用JDK小於1.5嗎?第二個可以很容易修復:只需創建從'AbstractTableModel'繼承的常規類並將數組傳遞給構造函數。 –