資源描述:
《Java的JTable解析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、1.1TableModel和讀取數(shù)據(jù)庫TableModel定義了存入和管理數(shù)據(jù)的方法,它還能為每一列定義數(shù)據(jù)名,并且可以設(shè)置單元格是否可編輯。它以一個二維數(shù)組的形式存入數(shù)據(jù)。下面有我關(guān)于如何讀取數(shù)據(jù)庫資料到TableModel的一個例子:publicclassTbModelextendsAbstractTableModel{privatestaticfinallongserialVersionUID=1L;privateVectordata;privateVectortitles;Connectionconnect;Statementstate;ResultSetrs;pu
2、blicmyTableModel(){data=newVector();try{Class.forName("com.mysql.jdbc.Driver");connect=DriverManager.getConnection("jdbc:mysql://localhost/javaproject","root","dddddd");state=connect.createStatement();rs=state.executeQuery("select*fromproduct");while(rs.next()){data.add(rs.getString(1));da
3、ta.add(rs.getString(2));data.add(rs.getString(3));data.add(rs.getString(4));data.add(rs.getString(5));}}catch(ClassNotFoundExceptione){System.out.println("JDBCdrivernotloaded:"+e);}catch(SQLExceptione){System.out.println("Connectionfailed:"+e);}}titles=newVector();titles.add("CATEGORY"
4、);titles.add("NAME");titles.add("PRICES");titles.add("QUANTITY");titles.add("ADDRESS");publicintgetRowCount(){returndata.size()/getColumnCount();}publicintgetColumnCount(){returntitles.size();}publicObjectgetValueAt(introwIndex,intcolumnIndex){returndata.get((rowIndex*getColumnCount())+col
5、umnIndex);}publicStringgetColumnName(intcolumnIndex){StringcolName=newString();if(columnIndex<=getColumnCount())colName=(String)titles.get(columnIndex);returncolName;}}當從AbstractTableModel繼承一個類時,getRowCount(),getColumnCount(),和getValueAt(introwIndex,intcolumnIndex)等方法將自動建立(用Eclipse),記住上面所提
6、的第三個方法,我們一會會用到。另外在上面的類中,getColumnName(intcolumnIndex)方法是用來定義列名字的。1.2通過TableModel連接數(shù)據(jù)庫和JTable接下來,你只需要把下列代碼加入你的界面代碼中就好:JTabletable=newJTable(newTbModel())2.1addMouseListener()方法JTable可以用addMouseListenner()方法來監(jiān)聽鼠標動作,下面的代碼是當鼠標點下時,返回鼠標所點的單元格的行列索引:table.addMouseListener(newjava.awt.event.MouseAd
7、apter(){publicvoidmouseClicked(java.awt.event.MouseEvente){introw=((JTable)e.getSource()).rowAtPoint(e.getPoint());intcol=((JTable)e.getSource()).columnAtPoint(e.getPoint());}});現(xiàn)在你可以得到行列索引row和col啦!2.2 取得單元格里的值你還記得上一章我讓你記住的那個方法嗎?沒錯,getValueAt(introwIndex,intco