最後我解決了這個問題。讓我分享我的代碼;
Table Model Class;
class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"Mach",
"ID",
"Status",
"IsActive"};
private Vector<Vector<Object>> data = new Vector<Vector<Object>>();
public MyTableModel() {try {
fetchDB();
} catch (Exception ex) {
Logger.getLogger(Config.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void fetchDB()throws Exception{
ResultSet rs;
Statement stmt;
ResultSetMetaData rsmtd;
String query = "select Mach,ID,Status,IsActive from Configs\n" +
"order by Machine,ID";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://192.168.100.100;" + "databaseName=DBST;" + "user=" + "user1" + ";" + "password=" + "user1pass" + ";";
Connection con = DriverManager.getConnection(connectionUrl);
stmt = con.createStatement();
rs = stmt.executeQuery(query);
rsmtd = rs.getMetaData();
int columnCount = rsmtd.getColumnCount();
while (rs.next()) {
Vector<Object> vector = new Vector<Object>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
vector.add(rs.getObject(columnIndex));
}
data.add(vector);
}
}
catch(SQLException se){
se.printStackTrace();
}
catch (ClassNotFoundException ex) {
Logger.getLogger(Config.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data.elementAt(rowIndex).elementAt(columnIndex);
}
@Override
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
}
主桂;
jTable1 = new javax.swing.JTable (new MyTableModel());
開始通過在考慮看看[如何使用表(http://docs.oracle.com/javase/tutorial/uiswing/components/table.html),瞭解[細胞編輯和渲染] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender)工作並理解['TabelModel#getColumnClass']的重要性(http://docs.oracle.com/ javase/7/docs/api/javax/swing/table/TableModel.html#getColumnClass(int))方法以及它如何影響呈現的內容 – MadProgrammer
真的,我閱讀了如何使用4-5天的表格文章。但文章總是顯示具有默認值的創建模型。我基本理解邏輯,但當我需要從resultset中檢索數據時,我陷入了困境。 –
請參閱[編輯器和渲染器]一節(http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender),其中明確定義了「TableModel」的要求以便使用默認編輯/渲染器。然後查看鏈接的[demo](http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/components /TableDemoProject/src/components/TableDemo.java),這清楚地表明瞭所討論的概念。請求代碼不是這個論壇的工作方式 – MadProgrammer