You are on page 1of 5

HTML,CSS,Java Script (2) Java (17) L thuyt CNTT (5) Phn mm (18) Li phn mm v ci t (7) S dng phn mm v th thut

(11) Dnh cho tm hn (11) Tm s (5) Vn khc (5)

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

S dng JTable ca Swing trong java (phn 1)


Posted: July 9, 2011 by nghexuanchien in Java Tags: AbstractTableModel, DefaultTableModel, JTable, TableModel

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); } }

Trong contructor ca lp SimpleTableTest ta c hai dng lnh sau:


TableValues tv = new TableValues(); table = new JTable(tv);

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

You might also like