TShopping

 找回密碼
 註冊
搜索
查看: 975|回復: 1

[教學] 在JTable撈出資料庫資訊秀出

[複製鏈接]
發表於 2014-9-5 12:33:45 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
  1. 1://一.新建一表格視圖(MVC的View)
  2. JTable JTableView = new JTable();
  3. 2://二.新建一表格範本(MVC的Model)
  4. DefaultTableModel JTableModel = new DefaultTableModel();
  5. 3://三.新建createTableModel()方法
  6. private void createTableModel() {
  7. // JTableModel.setColumnCount(0); //清空表格範本內所有的列
  8. // JTableModel.setRowCount(0); //清空表格範本內所有的行
  9. // 在表格範本中加入列(加標題)
  10. JTableModel.addColumn("學號");
  11. JTableModel.addColumn("姓名");
  12. JTableModel.addColumn("性別");
  13. JTableModel.addColumn("成績");



  14. 4: //四.在初始化元件的方法中調用createTableModel()方法
  15. createTableModel();
  16. 5: //五.在表格視圖中設置要應用的表格範本
  17. JTableView.setModel(JTableModel);
  18. 6: // 連接資料庫第1種方法,直接寫代碼
  19. //1.載入驅動程式
  20. try {
  21. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  22. } catch (Exception ex) {
  23. ex.printStackTrace();
  24. System.out.println("驅動程式載入失敗!");
  25. }
  26. try {
  27. //2.建立資料庫連接
  28. Connection con = DriverManager.getConnection("jdbc:odbc:Lesson12");
  29. //3.建立Statement語句執行物件
  30. Statement st = con.createStatement();
  31. //4.建立ResultSet結果集,執行SQL命令
  32. ResultSet rs = st.executeQuery("select * from StuScore");
  33. // Vector vcRows = new Vector(); //error 每行顯示的都是第一條記錄
  34. //在表格範本中加入行(將表內記錄通過迴圈一行行添加到表格範本中去)
  35. while (rs.next())
  36. {
  37. Vector vcRows = new Vector();
  38. vcRows.addElement(rs.getInt(1));
  39. vcRows.addElement(rs.getString(2));
  40. vcRows.addElement(rs.getString(3));
  41. vcRows.addElement(rs.getFloat(4));
  42. // JTableModel.addRow(rs.getInt(1)); //error
  43. // JTableModel.addRow(rs.getString(2)); //error
  44. JTableModel.addRow(vcRows); //添加一行記錄到表格範本中
  45. }
  46. //5.關閉連接
  47. rs.close();
  48. st.close();
  49. con.close();
  50. // DBConnection.closeStmtAndCon(); //關閉相關連接
  51. } catch (Exception ex) {
  52. ex.printStackTrace();
  53. System.out.println("資料庫連接失敗!");
  54. }

  55. =========完整的例子================================
  56. public class NewAssignDialog extends javax.swing.JDialog {

  57. org.htc.util.MyQuery mq = null;
  58. private int rowCount = 0;
  59. DefaultTableModel dTableModel = null;



  60. private javax.swing.JScrollPane jScrollPane1;
  61. private javax.swing.JTable jTable1;

  62. /** Creates new form NewZujianDialog */
  63. public NewAssignDialog(java.awt.Frame parent, boolean modal) {
  64. super(parent, "臨牌發放", modal);
  65. //this.setLocation(120, 100);//視窗的位置
  66. setAutoCenter(true);//視窗的位置
  67. tiaomaTextField.setFocusable(true);

  68. jScrollPane1 = new javax.swing.JScrollPane();
  69. jTable1 = new javax.swing.JTable();
  70. jScrollPane1.setName("jScrollPane1"); // NOI18N
  71. jTable1.setAutoCreateRowSorter(true);
  72. jTable1.setModel(new javax.swing.table.DefaultTableModel(
  73. new Object [][] {
  74. {null, null, null, null},
  75. {null, null, null, null},
  76. {null, null, null, null},
  77. {null, null, null, null}
  78. },
  79. new String [] {
  80. "Title 1", "Title 2", "Title 3", "Title 4"
  81. }
  82. ));
  83. jTable1.setName("jTable1"); // NOI18N
  84. jScrollPane1.setViewportView(jTable1);

  85. dTableModel = this.getDefaultTableModel();
  86. jTable1.setModel(dTableModel);
  87. //禁止移動更改列的位置
  88. jTable1.getTableHeader().setReorderingAllowed(false);
  89. }

  90. //JLabel -start
  91. private DefaultTableModel createTableModel() {
  92. DefaultTableModel JTableModel = new DefaultTableModel();
  93. // JTableModel.setColumnCount(0); //清空表格範本內所有的列
  94. // JTableModel.setRowCount(0); //清空表格範本內所有的行
  95. // 在表格範本中加入列(加標題)
  96. JTableModel.addColumn("ID");
  97. JTableModel.addColumn("姓名");
  98. JTableModel.addColumn("性別");
  99. JTableModel.addColumn("成績");
  100. return JTableModel;
  101. }

  102. public DefaultTableModel getDefaultTableModel() {
  103. DefaultTableModel JTableModel = new DefaultTableModel() {
  104. public boolean isCellEditable(int row, int column) {//設置不可編輯
  105. return false;
  106. }
  107. };
  108. int pagesize = 0;
  109. mq = new org.htc.util.MyQuery();
  110. mq.setPageSize(0);//頁面大小,顯示的行數
  111. List list = new AssignAction().query(mq);
  112. rowCount = list.size();
  113. for (int i = 0; i < list.size(); i++) {
  114. DesAssignType dzt = (DesAssignType) list.get(i);
  115. Vector vcRows = new Vector();
  116. vcRows.addElement(dzt.getId());
  117. vcRows.addElement(dzt.getTiaoMa());
  118. vcRows.addElement(dzt.getId());
  119. vcRows.addElement(dzt.getTiaoMa());

  120. JTableModel.addRow(vcRows); //添加一行記錄到表格範本中
  121. }
  122. return JTableModel;
  123. }

  124. public DefaultTableModel addRowDate(DefaultTableModel dtm) {
  125. if (dtm == null) {
  126. dtm = this.createTableModel();
  127. }
  128. Vector vcRows = new Vector();
  129. vcRows.addElement("1");
  130. vcRows.addElement("2");
  131. vcRows.addElement("3");
  132. vcRows.addElement("4");
  133. dtm.addRow(vcRows); //添加一行記錄到表格範本中
  134. jTable1.setModel(dtm);
  135. return dtm;
  136. }
  137. //JLabel -end


  138. //選中某一行
  139. private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
  140. // TODO add your handling code here:
  141. // 取得使用者所選的多行
  142. int selectRows = jTable1.getSelectedRows().length;// 取得使用者所選行的行數
  143. DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
  144. if (selectRows > 1) {
  145. int[] selRowIndexs = jTable1.getSelectedRows();// 使用者所選行的序列
  146. for (int i = 0; i < selRowIndexs.length; i++) {
  147. // 用tableModel.getValueAt(row, column)取儲存格資料
  148. int selRowIndex = selRowIndexs[i];
  149. selRowIndex = selRowIndex-i;
  150. //選擇table第一格的欄位值
複製代碼

 

臉書網友討論
發表於 2016-1-14 16:38:40 | 顯示全部樓層
非常感谢~~~~~~~~~~~

版主招募中

您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-10 13:26 , Processed in 0.074455 second(s), 21 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表