用來(lái)創(chuàng)建表格的 JTable 類(lèi)并不負(fù)責(zé)存儲(chǔ)表格中的數(shù)據(jù),而是由表格模型負(fù)責(zé)存儲(chǔ)。當(dāng)利用 JTable 類(lèi)直接創(chuàng)建表格時(shí),只是將數(shù)據(jù)封裝到了默認(rèn)的表格模型中。接下來(lái),我們來(lái)學(xué)習(xí)表格模型的使用方法。
利用表格模型創(chuàng)建表格
接口 TableModel 定義了一個(gè)表格模型,抽象類(lèi) AbstractTableModel 實(shí)現(xiàn)了 TableModel 接口的大部分方法,只有一下三個(gè)抽象方法沒(méi)有實(shí)現(xiàn)。
1
2
3
4
5
|
( 1 ) public int getRowCount() ( 2 ) public int getColumnCount() ( 3 ) public Object getValueAt( int rowIndex , int columnIndex) |
通過(guò)繼承 AbstractTableModel 類(lèi)實(shí)現(xiàn)上面三個(gè)抽象方法可以創(chuàng)建自己的表格模型類(lèi)。DefaultTableModel 類(lèi)便是由 Swing 提供的繼承了 AbstractTableModel 類(lèi)并實(shí)現(xiàn)了上面三個(gè)抽象方法的表格模型類(lèi)。
表格模型創(chuàng)建完成后,通過(guò) JTable 類(lèi)的構(gòu)造方法 JTable(TableModel dm)創(chuàng)建表格,就實(shí)現(xiàn)了利用表格模型創(chuàng)建表格。
從JDK 1.6 開(kāi)始,提供了對(duì)表格進(jìn)行排序的功能。通過(guò) JTable 類(lèi)的 setRowSoreter(RowSorter<?extends TableModel>sorter)方法可以為表格設(shè)置排序器。TableRowSorter 類(lèi)是由Swing 提供的排序器類(lèi)。為表格設(shè)置排序器的典型代碼如下:
1
2
3
|
DefaultTableModel tableModel = new DefaultTableModel(); //創(chuàng)建表格模型 JTable table = new JTable(tableModel); //創(chuàng)建表格 table.setRowSorter( new TableRowSorter(tableModel)); //設(shè)置排序器 |
如果為表格設(shè)置了排序器,當(dāng)單機(jī)表格的某一列頭時(shí),在該列名稱(chēng)的后面將出現(xiàn)▲標(biāo)記,說(shuō)明按該列升序排列表格中的所有行;當(dāng)再次單機(jī)該列頭時(shí),標(biāo)記將變成▼,說(shuō)明按該列降序排列表格中的所有行。
注意:
在使用表格排序器時(shí),通常要為其設(shè)置表格模型。一種方法是通過(guò)構(gòu)造方法 TableRowSorter(TableModel model)創(chuàng)建排序器;另一種方法是通過(guò) setModel(TableModel model)方法為排序器設(shè)置表格模型。
以上就是本文的所有內(nèi)容,謝謝大家對(duì)本站的支持,后面更加精彩!