我想顯示一個數據庫表作爲JTable。我從來沒有使用過JTable,所以我使用JTable和TableModel。用於Java中JTable的JDBC TableModel?
隨着那google搜索,我可以寫我自己的自定義的TableModel這顯示存儲在
Object[][] data;
現在的數據,我想表明我的數據庫表中的數據到JTable中。我也搜索了這個,並對此有了一個瞭解,但仍然對AbstractTableModel的實現類中應該出現什麼問題感到困惑。
以下是自定義TableModel的代碼。現在
public abstract class AbstractPOLDATTableModel extends AbstractTableModel {
protected boolean DEBUG = false;
private String[] columnNames;
private Object[][] data;
protected AbstractPOLDATTableModel(String[] columnNames, Object[][] data) {
this.columnNames = columnNames;
this.data = data;
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
@Override
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
@Override
public boolean isCellEditable(int row, int col) {
if (col < 2) {
return false;
} else {
return true;
}
}
@Override
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() + ")");
}
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("--------------------------");
}
}
,如何更改上面的代碼,使我的JTable中可以有follwing特點:
- 它顯示數據庫中的數據
- 用戶可以直接編輯表,他點擊時在「保存」按鈕上,更改反映在數據庫數據中
- 用戶可以直接插入數據。
- 用戶可以直接刪除數據。
你在哪裏給你最後發表的工作示例。 – camickr
昨天你問了幾乎相同的問題:http://stackoverflow.com/questions/2192764/how-to-fill-data-in-a-jtable-with-database – sateesh
Yatendra - 看看我昨天的例子問題並告訴我你卡在哪裏,我會盡力給你一些指示。 – Adamski