|
"01063541298", new Integer(4000), new Boolean(false)} };
//下述方法是重写AbstractTableModel中的方法,其主要用途是被JTable对象调用,以便在表格中正确的显示出来。程序员必须根据采用的数据类型加以恰当实现。 //获得列的数目 public int getColumnCount() { return columnNames.length; }
//获得行的数目 public int getRowCount() { return data.length; }
//获得某列的名字,而目前各列的名字保存在字符串数组columnNames中 public String getColumnName(int col) { return columnNames[col]; }
//获得某行某列的数据,而数据保存在对象数组data中 public Object getValueAt(int row, int col) { return data[row][col]; }
//判断每个单元格的类型 public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); }
//将表格声明为可编辑的 public boolean isCellEditable(int row, int col) {
if (col < 2) { return false; } else { return true; } }
//改变某个数据的值 public void setValueAt(Object value, int row, int col) { if (DEBUG) { System.out.println("Setting value at " + row + ", " + col + " to " + value + " (an instance of " + value.getClass() + ")"); }
if (data[0][col] instanceof Integer && !(value instanceof Integer)) { try { data[row][col] = new Integer(value.toString()); fireTableCellUpdated(row, col); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(TableDemo.this, "The \"" + getColumnName(col) + "\" column accepts only integer values."); } } else { data[row][col] = value; fireTableCellUpdated(row, col); }
if (DEBUG) { System.out.println("New value of data:"); printDebugData(); } }
private void printDebugData() { int numRows = getRowCount(); int numCols = getColumnCount();
for (int i=0; i < numRows; i++) { System.out.print(" row " + i + ":"); for (int j=0; j < numCols; j++) { System.out.print(" " + data[i][j]); } System.out.println(); } System.out.println("--------------------------"); } }
public static void main(String[] args) { |