woff 發表於 2014-9-5 12:33:45

在JTable撈出資料庫資訊秀出

1://一.新建一表格視圖(MVC的View)
JTable JTableView = new JTable();
2://二.新建一表格範本(MVC的Model)
DefaultTableModel JTableModel = new DefaultTableModel();
3://三.新建createTableModel()方法
private void createTableModel() {
// JTableModel.setColumnCount(0); //清空表格範本內所有的列
// JTableModel.setRowCount(0); //清空表格範本內所有的行
// 在表格範本中加入列(加標題)
JTableModel.addColumn("學號");
JTableModel.addColumn("姓名");
JTableModel.addColumn("性別");
JTableModel.addColumn("成績");



4: //四.在初始化元件的方法中調用createTableModel()方法
createTableModel();
5: //五.在表格視圖中設置要應用的表格範本
JTableView.setModel(JTableModel);
6: // 連接資料庫第1種方法,直接寫代碼
//1.載入驅動程式
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("驅動程式載入失敗!");
}
try {
//2.建立資料庫連接
Connection con = DriverManager.getConnection("jdbc:odbc:Lesson12");
//3.建立Statement語句執行物件
Statement st = con.createStatement();
//4.建立ResultSet結果集,執行SQL命令
ResultSet rs = st.executeQuery("select * from StuScore");
// Vector vcRows = new Vector(); //error 每行顯示的都是第一條記錄
//在表格範本中加入行(將表內記錄通過迴圈一行行添加到表格範本中去)
while (rs.next())
{
Vector vcRows = new Vector();
vcRows.addElement(rs.getInt(1));
vcRows.addElement(rs.getString(2));
vcRows.addElement(rs.getString(3));
vcRows.addElement(rs.getFloat(4));
// JTableModel.addRow(rs.getInt(1)); //error
// JTableModel.addRow(rs.getString(2)); //error
JTableModel.addRow(vcRows); //添加一行記錄到表格範本中
}
//5.關閉連接
rs.close();
st.close();
con.close();
// DBConnection.closeStmtAndCon(); //關閉相關連接
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("資料庫連接失敗!");
}

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

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



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

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

jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jScrollPane1.setName("jScrollPane1"); // NOI18N
jTable1.setAutoCreateRowSorter(true);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jTable1.setName("jTable1"); // NOI18N
jScrollPane1.setViewportView(jTable1);

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

//JLabel -start
private DefaultTableModel createTableModel() {
DefaultTableModel JTableModel = new DefaultTableModel();
// JTableModel.setColumnCount(0); //清空表格範本內所有的列
// JTableModel.setRowCount(0); //清空表格範本內所有的行
// 在表格範本中加入列(加標題)
JTableModel.addColumn("ID");
JTableModel.addColumn("姓名");
JTableModel.addColumn("性別");
JTableModel.addColumn("成績");
return JTableModel;
}

public DefaultTableModel getDefaultTableModel() {
DefaultTableModel JTableModel = new DefaultTableModel() {
public boolean isCellEditable(int row, int column) {//設置不可編輯
return false;
}
};
int pagesize = 0;
mq = new org.htc.util.MyQuery();
mq.setPageSize(0);//頁面大小,顯示的行數
List list = new AssignAction().query(mq);
rowCount = list.size();
for (int i = 0; i < list.size(); i++) {
DesAssignType dzt = (DesAssignType) list.get(i);
Vector vcRows = new Vector();
vcRows.addElement(dzt.getId());
vcRows.addElement(dzt.getTiaoMa());
vcRows.addElement(dzt.getId());
vcRows.addElement(dzt.getTiaoMa());

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

public DefaultTableModel addRowDate(DefaultTableModel dtm) {
if (dtm == null) {
dtm = this.createTableModel();
}
Vector vcRows = new Vector();
vcRows.addElement("1");
vcRows.addElement("2");
vcRows.addElement("3");
vcRows.addElement("4");
dtm.addRow(vcRows); //添加一行記錄到表格範本中
jTable1.setModel(dtm);
return dtm;
}
//JLabel -end


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

wvmoxtm 發表於 2016-1-14 16:38:40

非常感谢~~~~~~~~~~~
頁: [1]
查看完整版本: 在JTable撈出資料庫資訊秀出