【Java】可視化Swing中JTable控制項綁定SQL資料來源的兩種方法

來源:互聯網
上載者:User
文章目錄
  • JTable的構造方法
  • 必要的準備工作

在 MyEclipse 的可視化 Swing 中,有 JTable 控制項。

JTable 用來顯示和編輯常規二維單元表。

那麼,如何將 資料庫SQL中的資料繫結至JTable中呢?

在這裡,提供兩種方法。

JTable的構造方法通過查閱Java的API,可以可以得到JTable的兩個重要的構造方法:JTable(Object[][] rowData, Object[] columnNames)
構造一個 JTable 來顯示二維數組 rowData 中的值,其列名稱為 columnNames。

JTable(TableModel dm)
構造一個 JTable,使用資料模型 dm、預設的列模型和預設的選擇模型對其進行初始化。以下,我們就通過這兩個構造方法來將JTable綁定到SQL資料庫。必要的準備工作一、有一個可供繫結資料庫。二、在可視化Swing中拖拉進來一個Jtable控制項。方法一:通過二維數組綁定該方法用到的構造方法為:
JTable(Object[][] rowData, Object[] columnNames)
構造一個 JTable 來顯示二維數組 rowData 中的值,其列名稱為 columnNames。
構建二維數組rowData通過上節博文“先行編譯”的學習,我們已經能夠將SQL資料庫讀取至ResultSet 中。博文見http://blog.csdn.net/jueblog/article/details/9622159回顧如下:

/** 查詢並返回記錄集 */public ResultSet getResultSet(String sql, Object[] objArr){getConnection();try {pStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);if(objArr!=null && objArr.length>0) {for (int i = 0; i < objArr.length; i++) {pStatement.setObject(i+1, objArr[i]);}}rSet = pStatement.executeQuery();//list = resultSetToList(rs);} catch (SQLException e) {e.printStackTrace();} finally {//close();}return rSet;}

【注】只是與上節部落格的方法名不同而已。。

現在,我們為了將ResultSet 轉化為二維數組,寫如下方法:
/** 把結果集轉成Object[][] */public Object[][] resultSetToObjectArray(ResultSet rs) {Object[][] data = null;try {rs.last();int rows = rs.getRow();data = new Object[rows][];  ResultSetMetaData md = rs.getMetaData();//擷取記錄集的中繼資料int columnCount = md.getColumnCount();//列數rs.first();int k = 0;while(rs.next()) {System.out.println("i"+k);Object[] row = new Object[columnCount];for(int i=0; i<columnCount; i++) {row[i] = rs.getObject(i+1).toString();}data[k] = row;k++;}} catch (Exception e) {}return data;}

並將這兩個方法存至檔案UserDAO.java中。

在Swing所在的Java檔案中先執行個體化UserDAO:
UserDAO userDAO = new UserDAO();

即可將SQL資料轉化為二維數組:

Object[][] dataObjects = userDAO.resultSetToObjectArray(userDAO.getResultSet("select id,username,password from t_userr", null));
構建列名稱 columnNames

這個比較簡單,只需要將列名稱寫入String數組即可。

String[] tableStrings = { "id", "username", "password" };
構建JTable的Model:
jTable1.setModel(new DefaultTableModel(dataObjects, tableStrings));
整體程式碼檢視:


最終JTable:

方法二:通過Model綁定

該方法用到的構造方法為:JTable(TableModel dm)
構造一個 JTable,使用資料模型 dm、預設的列模型和預設的選擇模型對其進行初始化。設定Model路徑進入 JTable 控制項的控制台,點擊model。選擇Model來自代碼。填寫 model 的方法路徑:包名.Java檔案名稱.方法名。為了調用方便,建議將方法設定為靜態方法。寫入Model 方法在剛剛設定的路徑下寫入Model的方法,注意其傳回型別為TableModel。方法的寫法與上面的大同小異,不再贅述。

public static TableModel Member() {String[][] playerInfo = new String[80][8];BaseDAO bDao = new BaseDAO();String sql = "select id,realName,username,sex,phone,email,vocation,city from jdbctest";String[] ss = {};ArrayList<HashMap<Object, Object>> list = bDao.Query(sql, ss);//bDao.AllArray(list);int i = 0, j = 0;for (HashMap<Object, Object> maps : list) {Set<Object> keysObjects = maps.keySet();for (Object kObject : keysObjects) {playerInfo[i][j] = maps.get(kObject).toString();j++;}i++;j = 0;}String[] Names = { "id", "username", "sex", "phone","vocation","email","realName",   "city" };DefaultTableModel dModel = new DefaultTableModel(playerInfo, Names);return (TableModel)dModel;}
JTable 效果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.