Professional Documents
Culture Documents
Sử dụng JTable của Swing trong java (phần 1)
Sử dụng JTable của Swing trong java (phần 1)
Tm kim
search this site
Lch vit bi
July 2011 M T W T F S S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Jun Aug
Lng truy cp
9,613 lt xem t 30/04/2011
1 Vote
Nu chng ta hn s thy rng rt nhiu ng dng cn hin th d liu di dng bng biu. Trong java,
Swing cung cp cho chng ta mt lp thc hin iu ny l lp JTable. Bn cnh kh nng hin th thng tin, JTable cng cho php chng ta d dng sa i thng tin, t kch c v u cho tng ct, v iu khin cch d liu hin th trong bng biu. u tin chng ta hy hc cch hin th thng tin ln bng biu v y l chc nng c bn v cng cn thit nht. Bn cht ca JTable l n ly d liu t mt data model v hin th d liu t ln. V th, trc tin chng ta s nghin cu v ci data model.
Data model
Ngoi lp JTable, Swing cn cung cp mt s cc lp, cc interface khc na. Cc lp, interface ny s c s dng bi lp JTable v chng c nh ngha trong gi javax.swing.table. Mt trong s l interface TableModel. Interface TableModel to nn mt s giao tip gia mt ci JTable v ci data model ca n. Ging nh cc thnh phn khc ca Swing, JTable c thit k theo m hnh model/view/controller m cc thnh phn dng hin th (JTable )s c tch ring bit so vi cc thnh phn lu tr d liu (TableModel). iu ny mang n mt s linh ng hn trong thit k v tng kh nng s dng li cc thnh phn. Tuy nhin, n cng lm cho vic s dng JTable tr nn phc tp hn. Nhng cng tht may mn, Swing cng cung cp mt s ci t mc nh lm cho vic s JTable tr nn phc tp hn trc. Nh ni, TableModel c nhim v l cung cp d liu hin th cho JTable. Bn cnh , n cng c nhim v cung cp cho JTable mt vi thng tin khc nh: S lng dng v s lng ct trong bng Kiu d liu trong tng ct Tiu cho tng ct C cho php sa gi tr trong mt hay khng Interface TableModel bao gm 9 phng thc cn c ci t ging nh di y.
Cn phi ci t c 9 phng thc thc s khng thch hp trong nhng trng hp chng ta mun to nhanh mt bng. Nhng java cng cung cp cho chng ta cc lp khc nh l AbstractTableModel v DefaultTableModel. C hai lp ny u ci t phn no cc phng thc ca interface TableModel. V th, khi s dng th chng ta s tn t cng hn. Chng hn nh nu chng ta k tha lp AbstractTableModel th chng ta chi cn ci t 3 phng thc sau: Phng thc tr v s dng ca bng Phng thc tr v s ct ca bng Phng thc tr v gi tr ca mi Di y, chng ta to mt lp l TableValues trong file TableValues.java. Lp ny k tha lp AbstractTableModel v s l data model cho mt ci JTable.
public class TableValues extends AbstractTableModel{
public final static boolean GENDER_MALE = true; public final static boolean GENDER_FEMALE = false; public Object[][] values = { { "Clay", "Ashworth", new GregorianCalendar(1962, Calendar.FEBRUARY, 20).getTime(), new Float(12345.67), new Boolean(GENDER_MALE) }, { "Jacob", "Ashworth", new GregorianCalendar(1987, Calendar.JANUARY, 6).getTime(), new Float(23456.78), new Boolean(GENDER_MALE) }, { "Jordan", "Ashworth", new GregorianCalendar(1989, Calendar.AUGUST, 31).getTime(), new Float(34567.89), new Boolean(GENDER_FEMALE) }, { "Evelyn", "Kirk", new GregorianCalendar(1945, Calendar.JANUARY, 16).getTime(), new Float(-456.70), new Boolean(GENDER_FEMALE) }, { "Belle", "Spyres", new GregorianCalendar(1907, Calendar.AUGUST, 2).getTime(), new Float(567.00), new Boolean(GENDER_FEMALE) } }; public int getRowCount() { return values.length; } public int getColumnCount() { return values[0].length; } public Object getValueAt(int rowIndex, int columnIndex) { return values[rowIndex][columnIndex]; } }
y, d liu chnh l mng hai chiu values. V cho v d n gin nn chng ta vit d liu trong code (hard-code). Tuy nhin, ngoi thc t, d liu ca chng ta thng s ly ra t c s d liu. Nh ni trn, v kt tha lp AbstractTableModel, nn chng ta phi ci t 3 phng thc l getRowCount, getCollumnCount v getValueAt By gi chng ta to mt lp SimpleTableTest to mt JTable v gn cho n ci model va to trn on code trong file SimpleTableTest.java s nh sau:
public class SimpleTableTest extends JFrame{ protected JTable table; public SimpleTableTest(){ Container pane = getContentPane();
pane.setLayout(new BorderLayout()); TableValues tv = new TableValues(); table = new JTable(tv); pane.add(table, BorderLayout.CENTER); } public static void main(String [] args){ SimpleTableTest stt = new SimpleTableTest(); stt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); stt.setSize(400, 200); stt.setVisible(true); } }
Dng lnh th nht l to ra mt ci data model tn l tv. Dng lnh th hai to ra mt ci JTable c tn l table v gn cho n ci model tv. Sau khi chy chng trnh, d liu trong model tv s c hin th ln ci bng table nh sau:
Nh vy, chng ta cng thy c, vic s dng AbstractTableModel c v nh nhnh hn rt nhiu so vi vic s dng TableModel. Bn cnh , vic s dng DefaultTableModel cn d dng hn nhiu so vi vic s dng AbstractTableModel tuy nhin n li khng c khuyn khch s dng. Nguyn nhn l bi v bn thn DefaultTableModel t ng to ra cc tham chiu n cc d liu thay v chng ta phi ci t mt phng thc no ging nh getValueAt khi s dng AbstracTableModel. iu ny dn ti mt s khng mm do v khng th m rng trong qu trnh s dng. Bn cnh , mt vn khc gp phi chnh l vn sa d liu cc . hiu ti sao DefaultTableModel khng c kh nng m rng, chng ta cn phi hiu ci JTable n lm vic nh th no. Nh chng ta bit, TableModel c nhim v ch ra trong bng c bao nhiu dng v c bao nhiu ct. Hai phng thc getRowCount v getColumnCount s c gi ngay khi mt bng c to v hin th. Tuy nhin, mt bng s khng bao gi tham chiu n ton b d liu trong TableModel m ch tham chiu n mt phn no hin th. Cho v d nh sau, gi s chng ta to mt data model tr v gi tr l 100 t phng thc getRowCount, nhng ci bng ca chng ta th nm trong mt ci ca s cun m mi ln chng ta ch nhn
ti a c 10 dng. Khi bng c hin th, u tin n s truy cp n 10 dng u ca d liu trong TableModel, v s truy cp n d liu cho cc dng khc ch khi chng ta cun thanh cun xung. Ti sao iu ny li quan trng nh vy? Bi v nh th n cho php chng ta hin th mt lng ln d liu vo trong JTable m khng cn ti ton b d liu vo b nh mt cch ng thi. Lc ny, TableModel ch cn ti d liu theo nhu cu, v gim thiu ti a dung lng b nh c s dng. Vi iu ny, gi chng ta quay li vic s dng DefaultTableModel v vic n t to ra cc tham chiu n d liu bn trong n. Bi v n yu cu tham chiu ti ton b d liu, nn ton b d liu phi nm bn trong b nh chng no chng ta vn cn s dng ci model . y chnh l nhc im ca vic s dng DefaultTableModel v mt li khuyn l chng ta nn dng AbstractTableModel thay th. Tuy nhin, vi mt lng d liu nh, chng ta vn c th cn nhc s dng DefaultTableModel bi v n n gin. Hn na d liu c cache sn vo trong b nh s gip chng ta truy cp nhanh hn. Tr li vi v d trn, chng ta thy rng c mt vn l khi ca s ca chng ta thay i sao cho kch thc ca n nh hn kch thc ca bng th c mt phn d liu s b mt khng th nhn thy nh hnh di y:
Thm vo na, cc ct ca chng ta cha c tiu . Tt c nhng vn ny s c gii quyt trong phn 2. Good luck! Ngun: Brett Spell Pro Java Programming, Second Edition
Like this: Like Be the first to like this post.
Comments are closed. Xa b hnh ci kha vng trn th mc trong window 7 S dng JTable ca Swing trong java (phn 2)
Dnh cho tm hn HTML,CSS,Java Script Java L thuyt CNTT Li phn mm v ci t S dng phn mm v th thut Tm s Vn khc
.NET C s v kho d liu
AbstractTableModel Agent ASP.NET Comparable ComponentAdapter Converter DefaultCellEditor DefaultT ableModel