Está en la página 1de 28

Swing l g ? Nu bn tng vo trang ch ca Java (http://java.sun.

.com), bn s nhn thy Swing c m t nh l mt tp cc thnh phn ha c to ra nhng cm quan (Look&Feel) c th hin vo thi im runtime. Tht s, th Swing cn nhiu hn nh th. Swing l b cng c GUI th h k tip m Sun Microsystems to ra cho php mi trng pht trin enterprise trong Java.Bng mi trng pht trin enterprise, chng ta hiu rng, cc lp trnh vin c th s dng Swing to ra cc ng dng Java c kh nng m rng vi mt dy nhiu thnh phn mnh m. Thm vo , bn c th k tha hoc chnh sa nhng thnh phn ny iu khin vic hin th v cc hnh x ca chng. Swing khng phi l mt t vit tt. l tn thay th cho mt tp hp la chn ca n cho cc designer khi d n c thc hin vo 1996. Swing tht s l mt phn ca gia nh rng ln cc sn phm ca Java c bit n nh Java Foundation Classes s(JFC) bao gm nhiu c im ca Internet Foundation Classes ca Netscape cng nh b nh hng thit k ca Taligent v Lighthouse Design ca IBM. Swing c pht trin tht s k t thi im bn beta ca JDK 1.1, khong ma xun 1997. Swing API bn beta a ra khong na cui 1997 v c chnh thc pht hnh vo thng 3 nm 1998. Khi c pht hnh, cc th vin ca Swing 1.0 cha khong 250 lp v 80 giao tip. S pht trin c tip tc khi theo thi gian, bn Swing 1.4 cha 85 giao tip public v 451 lp public. Mc d Swing l c pht trin n l t li ca Java Development Kit, n yu cu phi c ti thiu JDK 1.1.5 chy. Swing c xy dng da trn nhng m hnh event c gii thiu trong serie JDK 1.1. Bn khng th s dng Swing vi JDK 1.0.2, thm vo bn phi c Java 1.1 cho php trnh duyt h tr Swing Applet. Java 2 SDK 1.4 c pht hnh bao gm nhiu lp Swing c cp nht v h tr mt vi c im mi. Swing c tch hp y trong c trong b cng c ca cc nh pht trin v runtime environment ca tt c cc bn pht hnh Java 2 (SDK 1.2 v nhng phin bn cao hn) cha c Java Plug-in. Java Foundation Classes l g? FC l mt nhm cc th vin c thit k h tr lp trnh vin to ra cc ng dng enterprise vi Java. Swing ch l mt trong nm th vin to nn JFC. JFC cng cha Abstract Window Toolkit (AWT), Accessibility API, 2D API v tng cng h tr kh nng ko th (Drag and Drog). 1.AWT L b cng c GUI c bn c ng gi vi tt c cc phin bn ca JDK. Trong khi Swing li khng s dng li bt k thnh phn AWT c hn. 2.Accessibility Gi accessibility cung cp vic h tr ngi dng gp rc ri vi giao tip ngi dng truyn thng. Cc cng c accessibilty c th c s dng trong vic kt ni vi cc thit b nh b c m thanh hay bn phm braille (dnh cho ngi khim th) cho php truy cp trc tip vo cc thnh phn Swing. Accessibility c chia ra lm 2 phn: Accessibility API c ng gi vi vic phn phi Swing, v Accessibility Utilities API c phn phi ring. Tt c cc thnh phn Swing u h tr accessibility. 3.2D API

Cha cc lp b sung cho cc kiu v khc nhau, mu sc, font ch v nhng m hnh phc tp. Gi Java ny da trn API c bn quyn t Taligent ca IBM. Cc lp ca 2D API khng phi l mt phn ca Swing. 4.Drag and Drop DnD l mt trong nhng cch ni n d c s dng trong cc giao tip ha ngy nay. Ngi dng c php click v gi mt i tng GUI, di chuyn n n mt frame khc hoc mt ca s trn desktop vi mt kt qu c th on trc c. DnD API cho php ngi dng b sung cc thnh phn c th ko th nhm trao i thng tin gia cc ng dng Java v cc ng dng native. Mc d DnD khng phi l mt phn ca Swing, n vn rt quan trng trong nhng sn phm ng dng mang tnh thng mi. 5.Internationalization (tnh quc t ha) Cho php cc nh pht trin c th xy dng cc ng dng c th tng tc vi ngi dng ton cu trong ngn ng ca chnh h. Vi input method framework, cc nh pht trin c th xy dng cc ng dng chp nhn cc vn bn c th s dng n hng ngn k t khc nhau nh ting Nht, ting Hn, v ting Trung Quc. Swing l g ? Cch s dng cc thnh phn c bn ca Swing. 1. Swing l g ? Swing l b cng c GUI th h k tip m Sun Microsystems to ra cho php mi trng pht trin enterprise trong Java.Bng mi trng pht trin enterprise, chng ta hiu rng, cc lp trnh vin c th s dng Swing to ra cc ng dng Java c kh nng m rng vi mt dy nhiu thnh phn mnh m. Thm vo , bn c th k tha hoc chnh sa nhng thnh phn ny iu khin vic hin th v cc hnh x ca chng.

Swing khng phi l mt t vit tt. l tn thay th cho mt tp hp la chn ca n cho cc designer khi d n c thc hin vo 1996. Swing tht s l mt phn ca gia nh rng ln cc sn phm ca Java c bit n nh Java Foundation Classes s(JFC) bao gm nhiu c im ca Internet Foundation Classes ca Netscape cng nh b nh hng thit k ca Taligent v Lighthouse Design ca IBM. Swing c pht trin tht s k t thi im bn beta ca JDK 1.1, khong ma xun 1997. Swing API bn beta a ra khong na cui 1997 v c chnh thc pht hnh vo thng 3 nm 1998. Khi c pht hnh, cc th vin ca Swing 1.0 cha khong 250 lp v 80 giao tip. S pht trin c tip tc khi theo thi gian, bn Swing 1.4 cha 85 giao tip public v 451 lp public.

Mc d Swing l c pht trin n l t li ca Java Development Kit, n yu cu phi c ti thiu JDK 1.1.5 chy. Swing c xy dng da trn nhng m hnh event c gii thiu trong serie JDK 1.1. Bn khng th s dng Swing vi JDK 1.0.2, thm vo bn phi c Java 1.1 cho php trnh duyt h tr Swing Applet. Java 2 SDK 1.4 c pht hnh bao gm nhiu lp Swing c cp nht v h tr mt vi c im mi. Swing c tch hp y trong c trong b cng c ca cc nh pht trin v runtime environment ca tt c cc bn pht hnh Java 2 (SDK 1.2 v nhng phin bn cao hn) cha c Java Plug-in. 2. JSlider JSider l mt thnh phn ca Swing gip cho ngi dng c th la chn mt gi tr s trong khong gi tr ngi lp trnh t ra. Li ch ca JSlider l c th biu din gi tr s ca ngi dng nhp v bng giao din trc quan, gip d liu ton vn.

Cch

to

dng

JSlider

trong

Netbean

To mt Jframe form mi, mnh t tn l Demo_JSlider, chn v ko icon JSlider trong Palette/ Swing Control ca Netbean vo trong Jframe
This image has been resized. Click this bar to view the full image. The original image is sized 1016x478px.

Chng ta cng tm hiu nhng thuc tnh c bn ca JSlider trong Netbean Thuc tnh maximum : l gi tr ln nht ca Slider Thuc tnh minimum : l gi tr nh nht ca Slider Thuc tnh value: l gi tr hin thi ca Slider Thuc tnh majorTickSpacing: l khong cch ca tng gi tr trong Slider Thuc tnh paintLabels : dng hin th gi tr s di JSlider Thuc tnh paintLabels : dng hin th nh du tng mc gi tr ca JSlider Thuc tnh paintTrack : dng hin th thanh trt ca JSlider By gi chng ta s to ra 1 textfield v khi ngi dng thay i gi tr ca Slider th gi tr s hin th trong Slider Chn Event cho JSlider l Statechange : cllick phi vo JSlider chn events/ change/ statechange
This image has been resized. Click this bar to view the full image. The original image is sized 845x560px.

G ni dung s kin cho statechange

Code:
this.t1.setText(this.sli.getValue()+"");

Note: t1 l Jtextfield, Sli l JSlide r


Kt qu :

3. Timer Swing Timer pht sinh mt hot nhiu s kin ActionEvent sau mt khong thi gian xc nh. Timer c th c cu hnh pht sinh s kin lp li nhiu ln hot ch mt ln duy nht. s dng Timer bn phi xc nh thi gian pht sinh bng mini giy v lng nghe s kin ActionListener

Li ch ca Timer: n dng t by trong mt thi gian xc nh s pht sinh, chng ta c th s dng ni lm soft v thi, quy nh thi gian lm bi, chng trnh tnh gi, ng h t ch By gi mnh s demo cho cc bn mt chng trnh nh v timer m thi gian theo giy nh To Jframe mi (d nhin ri).

- Mnh s to ra giao din nh th ny.

Khi chng ta bm nt bt u th timer bt u chy, khi bm nt ngng hot stop th timer s ngng. Bt u nh !

Chng ta to mt bin Timer v 2 bin Integer i din cho pht v giy ton cc

Code:
Timer thoigian; Integer second; Integer mini;

Khi to v set i tng cho Timer trong hm khi to

Code:
second=0; mini=0; thoigian= new Timer(1000, new ActionListener() {

@Override public String String if(temp.length()==1) { temp="0"+temp; } if(temp2.length()==1) { temp2="0"+temp2; } void actionPerformed(ActionEvent e) {

temp=mini.toString(); temp2=second.toString();

if(second==59) { dem.setText(temp+" mini++; second=0; }else { dem.setText(temp+" second++; } } }); Hm trn c y ngha s m s giy v giy ln hn 59 s cng dn sang pht v set cho dem l bin m thi Khi bm nt Bt u th ta s khi chy Timer gian : "+temp2); : "+temp2);

Code:
thoigian.start();

Khi bm nt Ngng th ta s tm ngng timer, v khi bm Bt u li th n m tip

Code:
thoigian.stop();

Khi bm nt Kt Thc th ta s tm ngng Timer v ng ti set 2 bin mini v second thnh gi tri 0, nu bm li nt Bt u th gi tr s set li 00:00

Code:
thoigian.stop(); mini=0; second=0;

y l kt qu ca qu tnh trn

Nhng c im ca Swing Swing cung cp cc c im vit nhng ng dng c kh nng m rng trong Java. Di y l mt trong nhng c im ph bin 1.Cm quan pluggable Mt trong nhng tnh th hin th v nht cc lp Swing l kh nng vit nhng cm quan (Look&Feels) cho mi thnh phn, thm ch thay i cm quan vo thi im runtime. L&Fs tr thnh mt vn quan trng trong vic pht trin GUI qua 10 nm. Nhiu ngi dng quen thuc vi kiu giao din Motif ph bin trong Windows 3.1 v vn cn s dng rng ri trong platform Unix. Microsoft to ra L&F nh gn hn trong cc h iu hnh 95/98/NT/2000 ca h. Ngoi ra, h thng my tnh Macintosh cng c mt L&F c thit k ring m hu ht ngi dng Apple u cm thy thoi mi vi chng. Swing c kh nng th hin nhiu L&F khc nhau v hin ti h tr cc L&F bao gm Windows, Unix Motif v Java Metal l L&F mc nh. Thm vo , Swing cho php ngi dng chuyn i L&F vo thi im runtime m khng phi ng ng dng. Theo cch ny, mt ngi dng s th xem cm quan no l th hin tt nht i vi h. V nu bn cm thy bn tht s c tham vng l mt nh pht trin, bn hy to L&F cho ring bn i vi mi thnh phn Swing. 2.Cc thnh phn lightweight Hu ht cc thnh phn Swing u khng nng n. Theo ngha en, ngha l nhng thnh phn ny c lp trn nhng L&F hin th chng. Thay vo , chng s dng mi trng ha gc n gin v chng trn mn hnh. Kh nng to ra nhng thnh phn lightweight ln u tin c cp trong JDK 1.1, mc d nhng thnh phn AWT chnh li khng nhn c nhng c im tin li ca n. Trc , cc lp trnh vin khng c mt s la chn no nhng c nhng lp con java.awt.Canvas hoc java.awt.Panel nhng lp trnh vin c th to ra nhng thnh phn ca ring h. T 2 lp ny, Java xc nh mt i tng opaque t h iu hnh ang chy thay th thnh phn ny, tc ng mnh n mi thnh phn tng tc nu nh bn thn n l ca s, v v th s c t trn hnh ch nht, ng vin n (solid). V th nhng thnh phn ny mang tn gi heavyweight bi v chng nm gi nhng phn m rng mc gc m Java khng s dng. Vi cc thnh phn lightweight, mi thnh phn th hin bn thn n bng cch s dng ha gc ca i tng Graphics. Chng lun th hin bn thn chng trn b mt ca cc thnh phn heavyweight cao nht m chng c cha trong . Nhng lp ny cho php cc lp trnh vin th hin mt cch nhanh chng ng cnh ha ca khung cha (container). Kt qu l nhng thnh phn tit kim c vng nh, chy nhanh hn nhng g c sn trc trong Java. Hu ht cc thnh phn Swing l lightweight, ch c mt vi container top-level l khng phi. Thit k ny cho php cc lp trnh vin v v v li L&F ca ng dng ca h vo thi im runtime kt hp chng vo cm quan ca h iu hnh chy ng dng . Thm vo , cch thit k cc thnh phn Swing cho php h tr d dng chnh sa cch hnh x ca cc thnh phn.

3.Cc c im m rng Nhng c im ring khc phn bit Swing vi nhng thnh phn AWT c

Swing c rt nhiu nhng thnh phn mi nh table, tree, slider, spinner, progress bar, internal frame v text. Nhng thnh phn Swing h tr vic thay th cc inset ca chng bng mt s lng ty cc border lng bn trong. Cc thnh phn Swing c cc Tooltip t bn trn chng. Bn c th ty chn cc s kin bn phm cho cc thnh phn, nh ngha chng hot ng nh th no vi nhng phm nng cho.

- Ngoi ra cn c h tr debug cho vic hin th nhng thnh phn Swing 4.Cc gi v cc lp Swing Di y l nhng m t ngn v cc gi trong th vin Swing 1.javax.accessibility Cha cc lp v cc giao tip m c th c s dng cho php cng ngh tr gip tng tc vi cc thnh phn ca Swing. Cc cng ngh tr gip cp mt dy cc item, t b c vn bn n phng i mn hnh. Mc d cc lp accessibility l nhng cng ngh khng thuc cc thnh phn Swing nhng chng c s dng m rng thng qua cc thnh phn Swing. 2.javax.swing Cha cc thnh phn ct li ca Swing, bao gm hu ht cc m hnh giao tip v cc lp h tr 3.javax.swing.border Cha nh ngha cc lp ng vin tru tng cng nh 8 ng vin c nh ngha. Border khng phi l nhng thnh phn, thay v th, chng l nhng yu t ha c bit m Swing s dng nh nhng thuc tnh v t chng xung quanh cc thnh phn. Nu nh bn mun to ra border ca ring bn, bn c th to lp con t nhng border c sn trong gi ny, hoc bn c th vit m cho mt lpmi. 4.javax.swing.colorchooser H tr cho thnh phn JColorChooser 5.javax.swing.event nh ngha nhng listener mi v nhng event m nhng thnh phn Swing s dng giao tip thng tin vi cc class. 6.javax.swing.filechooser H tr cho thnh phn JFileChooser 7.javax.swing.plaf nh ngha nhng yu t duy nht to nn L&F cho mi thnh phn Swing. Trong gi ny cha cc gi con l javax.swing.plaf.basic, javax.swing.plaf.metal v javax.swing.plaf.multi 8.javax.swing.table Cung cp cc m hnh v quan st cho thnh phn table, cho php bn sp xp thng ring bit trong nh dng li vi s xut hin tng t nh bng tnh. 9.javax.swing.text Cung cp cc im ca cc lp v giao tip da trn vn bn h tr thit k thng dng c bit n nh document/view.

10.javax.swing.text.html S dng k thut c v nh dang vn bn HTML 11.javax.swing.text.html.parser H tr vic phn tch HTML 12.javax.swing.text.rtf S dng k thut c v nh dng Rich Text Format 13.javax.swing.tree nh ngha cc m hnh v quan st thnh phn mt cy phn cp , c th thay th mt cu trc file hoc mt dy cc thuc tnh. 14.javax.swing.undo Cha nhng chc nng cn thit cho vic b sung chc nng undo. JFC (Java Foundation Class)

o o o o
Swing

Is a th vin set trnh interface Ha Pht trin based trn th vin AWT JFC cung cp kha nng to interface linh ng, uyn convert hn vi AWT JFC c available trong cc phin bn t JDK 1.2 become i. The class of JFC package in javax.swing

Package is one is trong th vin JFC, gm nhiu class (lp) v interface (giao din) supports tr mnh ti cho the settings trnh interface ha trn JDK. Swing be description as a file of to phn ha is to ra to the cm quan ( Hy nhn v cm nhn) is th hin vo thi point thi gian chy .
The thnh phn Swing The thnh phn GUI ca Swing thng bt ubi ch J - JButton: Nt press - JLabel: Nhn - JTextArea: Area vn bn - JFrame: Window - JPanel: Khung contain - JCheckbox: check - JRadioButton: check (ch mt trong la chn) - JList: Hp danh sch - JComboBox: Danh sch xo - JScrollPane: Thanh scroll - ...

Vic x l s kin trn of thnh phn Swing same nh trn of thnh phn AWT. This is the one for example v JFrame n gin

Code:

nhp nhp lp { container cng { super Label label = new Label ("Xin cha Thc Thc khu

khu java.awt hin m rng

javax.swing.JFrame; .*; JFrame

= hin

getContentPane (String

(), title)

(title); cho Tt c mi ngi, c cha nhn bi cnh ");

container.add } public { Thc hin exe = static void main (String a

(nhn);

[])

new

Nh bn thy, tht s khng c g qu phuc file. If you Thanh Tho AWT, the move qua SWING hon ton n gin vi bn. Di y l m ca tnh m them ta lm not move qua Swing.

Code:
import java.awt .*; nhp khu java Applet .*; nhp khu javax.swing .*, nhp khu java.awt.event .*; public class Calc7Swing m rng JApplet thc hin ActionListener { / / -------- ------------------------------------------------/ / Attributes: / / hin th tng s TextArea chy tng cng tnh ton / / Label u ra cho thy s lng hin ti c nhp vo / / tng gp i memVal v curVal c s dng tnh ton / / ----------------- ---------------------------------------/ / TextArea tng = new TextArea ("" , 5, 25, TextArea.SCROLLBARS_VERTICAL_ONLY); JTextArea tng s container = new JTextArea (5, 25); JLabel output = new JLabel (""); c = getContentPane (); i memVal = 0; i curVal = 0; char tempVal ;tng gp i kt qu = 0; //------------------------------ / / actionPerformed - //--- --------------------------- cng void actionPerformed (ActionEvent e) { string arg = e.getActionCommand (); char c = arg.charAt (0); String s = output.getText ();

/ / /

/ "" cha

Gi kha

tr c bit

hin hot

ti ng trn

ca gi tr

u hin

ra ti (s),

(arg.equals nu nu nu khc ngi ngi ngi no no no khc

("Backspace")) khc khc (arg.equals (1 / (arg.equals (arg.equals (sqrt x ")) ")) (CE

backspace ("C")) ")) clearAll clearEntry (Math.sqrt

(), (), (curVal));

setCurVal

(arg.equals

setCurVal

(1.0/curVal),

nu ngi no khc (arg.equals ("+/-")) Phm ch s lun lun c b sung vo gi tr hin ti (c> = '0 '& & c <= '9') setCurVal (s + c) ;

/ ra ) {if ; }

im

thp khc

phn

gia nu

tng

nu (c

khng

c ==

trong

u '.'

(s.indexOf

(c)

<0)

setCurVal

(s

c)

khc

nu

(c

==

'=

')

{ switch (tempVal) { trng hp '/': kt qu = memVal / curVal; break; trng hp '*': kt qu = memVal curVal; break; trng hp '-': kt qu = memVal-curVal; break ; trng hp '+ ' kt qu = memVal + curVal; break ; trng hp '%': kt qu =% memVal curVal; break ; } chui memstr = "" + kt qu + " = 0; output.setText ("");

} / else { switch { trng trng trng trng trng } / / tng Hin memstr th = "" kt + qu curVal + (padText / curVal / trn "" + TextArea c + "\ c n hp hp hp hp hp '/': '*': '-': '+': '%': memVal memVal memVal memVal memVal = = = = = curVal; curVal; curVal curVal; curVal; tempVal tempVal tempVal tempVal = = = = = '%' '/'; '*'; '-'; '+'; ph break; break; break; break; v ; (c) / X l tt c cc phm iu hnh

tempVal

tn l chui "; memstr.length sn

total.append ())); lng

(memstr, Clear = 0;

output.setText (""); } //----------------------------------------------} } //----------------------------/ / / / / public { / void ------/ / Phng Sau / thc n init () gi -----------------------------------------------thit lp cch () b tr b v tr mu thc --------sc. t tnh -------------------------------------------------init () -------------------------------------

makeButtons / my

setLayout setBackground c.setLayout c.add / /

(new

BorderLayout

(5,5)); (Color.lightGray);

(new (makeButtons c. add

BorderLayout

(5,5)); ());

(getContentPane

());

/ / add ("Center", makeButtons ()); } / / / / y l -----------------------------------------------nhng phng php hu ---------ch

/ / -------------------------------- -------------------------padText { String tr } / backspace ) {if { = setCurVal } } / / X l 'C' void [Xa tt c] () s.substring (0, s.length () -1); (s); ( s.length ()> 0) / trng backspace chnh t X nhn (String l s li temp temp.substring = (temp.length "" () + kch s; thc); t nhn String (String s, int size)

clearAll kha ring { total.setText output.setText curVal } / clearEntry { output.setText curVal } / dng String s) { / Thit mt lp String gi tr setCurVal = / X l private CE = memVal

(""); (""); = 0;

'[r

rng void

nhp

chnh ()

(""); 0;

hin void

ti,

bng t

cch nhn

s (

output.setText th curVal } { } } / s gp curVal output.setText } / / cch / iu / ny a s --------------------------------ra s xut hin dng ca ("" / dng Thit mt i = + lp s gi tr setCurVal hin void newValue) ti, t bng nhn = catch (i (s)) doubleValue

(s), { (); ex)

(NumberFormatException

cch (tng { newValue; newValue);

-----------------------applet, bng /

/ BorderLayout GridLayout / / Nhng mu sc c s dng cho cc nt c th , hoc c th khng xut hin / / sao chp ca bn, ty thuc vo trnh duyt

Web ca bn / / ------------------------------- -------------------------tin { / / / JPanel JPanel JPanel JPanel JPanel JPanel JButton JButton JButton JButton JButton JButton JButton JButton JButton JButton JButton / p p1 p2 p3 p4 p5 / / To = = = = = = backspaceBtn ceBtn cBtn n7Btn n8Btn n9Btn dBtn sqrtBtn n4Btn n5Btn n6Btn = = = = = = = = = = new new new new new new new = new u tng 4 ra = Panels JPanel JPanel JPanel JPanel JPanel JPanel new JButton new new new new new new new new JButton (new (new (new (new (new (new = new [p1 new Label TextArea qua BorderLayout BorderLayout BorderLayout GridLayout GridLayout BorderLayout JButton (" JButton JButton JButton JButton JButton JButton JButton JButton ("6 (); (); p4] (5,5)); (5,5)); (5,5)); (1,3,5,5)); (4,5,5,5)); (5,5)); ("Backspace"); CE "); ("C"); ("7"); ("8"); ("9"); ("/"); ("sqrt"); ("4"); ("5"); "); makeButtons JPanel ()

JButton JButton JButton JButton JButton JButton JButton JButton JButton JButton JButton

mBtn modBtn n1Btn n2Btn n3Btn miBtn dxBtn bn0Btn rBtn pBtn plBtn = =

= = = = = = new = new = =

new new new new new new JButton new JButton new new

JButton JButton JButton JButton JButton JButton ("1 JButton (" JButton JButton /

("*"); ("%"); ("1"); ("2"); ("3"); ("-"); x"); ("0"); +/-"); ("."); ("+");

JButton eBtn = new JButton ("="); backspaceBtn.addActionListener(this); ceBtn.addActionListener(this); cBtn.addActionListener(this); n7Btn.addActionListener(this); n8Btn.addActionListener(this); n9Btn.addActionListener(this); dBtn.addActionListener(this); sqrtBtn.addActionListener(this); n4Btn.addActionListener(this); n5Btn.addActionListener(this); n6Btn.addActionListener(this); mBtn.addActionListener(this); modBtn.addActionListener(this); n1Btn.addActionListener(this); n2Btn.addActionListener(this); n3Btn.addActionListener(this); miBtn.addActionListener(this); dxBtn.addActionListener(this); bn0Btn.addActionListener(this); rBtn.addActionListener(this); pBtn.addActionListener(this); plBtn.addActionListener(this); eBtn.addActionListener(this); // Add Backspace, CE, and C buttons to p3

p3.setForeground(new p3.setFont(new p3.add(backspaceBtn); p3.add(ceBtn); p3.add(cBtn); Font("Dialog", Font.PLAIN,

Color(232,0,0)); 12));

//

Add

Number Color(0, Font("Dialog",

buttons 0, Font.PLAIN,

to

p4 235)); 14));

p4.setForeground(new p4.setFont(new p4.add(n7Btn); p4.add(n8Btn); p4.add(n9Btn); p4.add(dBtn); p4.add(sqrtBtn); p4.add(n4Btn); p4.add(n5Btn); p4.add(n6Btn); p4.add(mBtn); p4.add(modBtn); p4.add(n1Btn); p4.add(n2Btn); p4.add(n3Btn); p4.add(miBtn); p4.add(dxBtn); p4.add(bn0Btn); p4.add(rBtn); p4.add(pBtn); p4.add(plBtn); p4.add(eBtn); // // Add [Label and and

initialize TextArea

output for

and

total output]

output.setBackground(Color.white); output.setForeground(Color.black); output.setFont(new total.setBackground(new total.setForeground(Color.black); total.setFont(new JScrollPane scrollPane = Font("Courier", new Font.BOLD, 14)); Font("Courier", Color(255, Font.BOLD, 255, 18)); 128));

JScrollPane(total,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,

JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); p5.add("Center", //p5.add("Center", p5.add("South", // p2.add("North", p2.add("Center", // p1.add("North", Add some spacing around Hook up the scrollPane); total); output); panels p3); p4); outside p5);

p1.add("Center", p.setFont(new p.add("North", p.add("East", p.add("West", p.add("South", p.add("Center", p1); return } } y l mt v d khc. Font("Helvetica", new new new new Font.PLAIN, Label(" Label(" Label(" Label("

p2); 6)); ")); ")); ")); "));

p;

Code:
import java.awt.*; import javax.swing.*;

public class HelloJFC{ public JFrameframe Iconicon JButtonbutton button.setMnemonic('R'); button.setToolTipText("Button frame.getContentPane().setLayout(newFlowLayout()); frame.getContentPane().add(button); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setSize(400, } } Code di y ch c duy nht mt button, khi bn click vo ca s s c ng li. 300);frame.setVisible(true); Rose"); = = newJButton("Rose", static void = main(String[] args){ newJFrame("JFC"); newImageIcon("rose.gif"); icon);

Code:
import javax.swing.JFrame; import java.awt.*; import java.awt.event.*; class Core extends JFrame { Container container = getContentPane(); public Core(String title) { super(title);

Button button = new Button("My button"); EventQuit eventQuit=new EventQuit(); button.addActionListener(eventQuit); container.add(button); } public static void main(String a[]) { Core exe = new Core("Frame"); exe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); exe.pack(); exe.setVisible(true); } class EventQuit implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(0); } } }

Bi vit cng chuyn mc

Cc bc to ng dng vi RMI
Cc ch lin quan:

o o o o o

[Java]Lp trnh giao din bng Swing (Phn 3) RMI Remote Method Invocation (p1) [Java] Thnh phn JCheckBox Swing [Java]Lp trnh phn tn RMI (Phn 2) [Java]Lp trnh Socket UDP (ton tp)

y chng ta c 1 v d to ng dng my ch tnh ton cc php tnh c bn(+, -, *, /) pha server: To th mc MyCalcServer, lu cc lp sau vo 1> To interface

Code:
import java.rmi.Remote; import java.rmi.RemoteException;

public long long long float }

interface Add(long Sub(long Mul(long Div(float

CalculatorInterface a,long a,long a,long a,float

extends b)throws b)throws b)throws b)throws

Remote

RemoteException; RemoteException; RemoteException; RemoteException;

2>To lp implements ci t cc dch v pha my ch:

Code:
import java.rmi.*; import java.rmi.server.*;

public private public { } public {

class

CalculatorImpl

extends

UnicastRemoteObject ServerUI

implements

CalculatorInterface

{ ui;

CalculatorImpl()

throws

RemoteException

CalculatorImpl(ServerUI

ui)

throws

RemoteException

this.ui=ui; } public long Add(long a, from long b) client: throws RemoteException {

ui.addItem(Call return } public long Sub(long

+a+++b+=+(a+b)); a+b;

a, from

long

b) client:

throws

RemoteException

ui.addItem(Call return } public long Mul(long

+a+-+b+=+(a-b)); a-b;

a, from

long

b) client:

throws

RemoteException

ui.addItem(Call return } public float Div(float

+a+*+b+=+(a*b)); a*b;

a,

float

b)

throws

RemoteException

if(Math.abs(b-0)<0.000001) { ui.addItem(Call throw } ui.addItem(Call return } } from client: +a+/+b+=+(a/b)); a/b; from client: new Divide by zero);

ArithmeticException();

3>Ci t server. y ti thit k server dng GUI

Code:
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.rmi.*; import javax.naming.Context; import javax.naming.InitialContext;

public private private private private private public super(Server lst=new this.add(new

class

ServerUI

extends

JFrame

implements

ActionListener{ dlm; lst; lblMessage;

DefaultListModel JList JLabel JButton Context

btnStart,btnStop,btnExit; ctx=null; ServerUI(){ RMI);

JList(dlm=new

DefaultListModel()); JScrollPane(lst),BorderLayout.CENTER);

setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(300,300); JPanel JPanel pB.add(pF); pF.add(btnStart=new pF.add(btnStop=new pF.add(btnExit=new pB.add(lblMessage=new JLabel()); btnStart.addActionListener(this); btnStop.addActionListener(this); btnExit.addActionListener(this); this.add(pB,BorderLayout.SOUTH); } public lblMessage.setText(msg); } public dlm.addElement(item); } public try{ ServerUI ui=new ServerUI(); static void main(String[]args){ void addItem(String item){ void DislplayInfos(String msg){ JButton(Start)); JButton(Stop));btnStop.setEnabled(false); JButton(Exit)); pB=new pF=new JPanel(new GridLayout(2,1)); JPanel();

java.rmi.registry.LocateRegistry.createRegistry(1099); ui.DislplayInfos(server ui.setVisible(true); }catch(Exception x.printStackTrace(); } } public Object if(o.equals(btnStart)){ new public try { CalculatorInterface calc=new ctx ctx.rebind(rmi:calc, lblMessage.setText(Calculator } catch ex.printStackTrace(); } } }).start(); btnStop.setEnabled(true); btnStart.setEnabled(false); } else try ctx.unbind(rmi:calc); ctx=null; btnStop.setEnabled(false); btnStart.setEnabled(true); lblMessage.setText(Calculator } catch ex.printStackTrace(); } } else System.exit(1); if(o.equals(btnExit)){ (Exception ex) { server is stopped); if(o.equals(btnStop)){ { (Exception ex) { server is =new calc=null; CalculatorImpl(ServerUI.this); InitialContext(); calc); running); Thread(new void Runnable(){ run(){ void actionPerformed(ActionEvent e){ o=e.getSource(); x){ is stop);

} } } 4>Bin dch: Trong command promt, g dng lnh sau bin dch (th mc hin hnh l MyCalcServer) javac *.java

5> Thc thi: To file MyCalSVR.bat vi ni dung sau java ServerUI //========================================================= //========================================================= //========================================================= pha client To th mc MyCalcClient. Cc lp sau c lu trong 1> Copy tp tin CalculatorInterface.class vo th mc ny. 2>To client nh sau, y chng ta dng GUI thit k

Code:
import java.awt.event.*; import java.awt.*; import javax.swing.*; import java.rmi.*;

public { private private private public JPanel JPanel JPanel

class

ClientUI

extends

JFrame

implements

ActionListener

JTextField JButton JButton

txtA,txtB,txtKQ; btnClear,btnExit; btnCalcAdd,btnCalcSub,btnCalcMul,btnCalcDev; ClientUI(){

pCen=new p1=new p3=new

JPanel(new JPanel();JPanel JPanel();JPanel p2=new p4=new

GridLayout(4,1)); JPanel(); JPanel();

pCen.add(p1);pCen.add(p2);pCen.add(p3);pCen.add(p4); getContentPane().add(pCen); //========================================== p1.add(new p2.add(new p3.add(new JLabel(Nhap JLabel(Nhap JLabel(Ket so so qua a));p1.add(txtA=new b));p2.add(txtB=new :));p3.add(txtKQ=new JTextField(15)); JTextField(15)); JTextField(15));

txtKQ.setEditable(false); p4.add(btnCalcAdd=new JButton( + ));btnCalcAdd.addActionListener(this);

p4.add(btnCalcSub=new p4.add(btnCalcMul=new

JButton( JButton(

));btnCalcSub.addActionListener(this); ));btnCalcMul.addActionListener(this);

p4.add(btnCalcDev=new JButton( / ));btnCalcDev.addActionListener(this); p4.add(btnClear=new p4.add(btnExit=new setResizable(false); setSize(350,200); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocation(300,200); } public Object if(o.equals(btnExit)){ System.exit(1); } else { if(txtA.getText().trim().equals()||txtB.getText().trim().equals()){ JOptionPane.showMessageDialog(null,Text Error,JOptionPane.ERROR_MESSAGE); return; } if(o.equals(btnCalcAdd)){ try CalculatorInterface obj=(CalculatorInterface)Naming.lookup(//localhost/calc); int int long txtKQ.setText(+x); }catch ex.printStackTrace(); } } else try CalculatorInterface obj=(CalculatorInterface)Naming.lookup(//localhost/calc); int int long a=Integer.parseInt(txtA.getText()); b=Integer.parseInt(txtB.getText()); x=obj.Sub(a,b); if(o.equals(btnCalcSub)){ { obj=null; (Exception ex) { a=Integer.parseInt(txtA.getText()); b=Integer.parseInt(txtB.getText()); x=obj.Add(a,b); { obj=null; Fields cannot be null, void actionPerformed(ActionEvent e) { o=e.getSource(); JButton(Clear));btnClear.addActionListener(this); JButton(Exit));btnExit.addActionListener(this);

txtKQ.setText(+x); }catch ex.printStackTrace(); } } else try CalculatorInterface obj=(CalculatorInterface)Naming.lookup(//localhost/calc); int int long txtKQ.setText(+x); }catch ex.printStackTrace(); } } else try CalculatorInterface obj=(CalculatorInterface)Naming.lookup(//localhost/calc); int int double txtKQ.setText(+x); }catch txtKQ.setText(Divide }catch ex.printStackTrace(); } } else txtA.setText(); txtB.setText(); txtKQ.setText(); } } } public static void main(String[]args){ client.policy); cc=new ClientUI(); if(o.equals(btnClear)){ (Exception (ArithmeticException by ex) aex) { zero); { a=Integer.parseInt(txtA.getText()); b=Integer.parseInt(txtB.getText()); x=obj.Div(a,b); if(o.equals(btnCalcDev)){ { obj=null; (Exception ex) { a=Integer.parseInt(txtA.getText()); b=Integer.parseInt(txtB.getText()); x=obj.Mul(a,b); if(o.equals(btnCalcMul)){ { obj=null; (Exception ex) {

System.setProperty(java.security.policy, ClientUI

cc.setVisible(true); } } 3> To File Policy tn client.policy vi ni dung sau

Code:
grant { permission java.net.SocketPermission *:1024-65535, connect; };

4> Bin dch vi command promt (th mc hin hnh l MyCalcClient) javac *.java 5> To file thc thi c tn MyCalclient.bat vi ni dung sau java ClientUI //========================================================= //========================================================= //========================================================= Demo ng dng: 1> Chy file MyCalSVR.bat chy server. Nhn nt Start start server

2> Chy file MyCalclient.bat chy client.

3> Test chng trnh Chc cc bn thnh cng!

[Java] Thnh phn JCheckBox Swing


Cc ch lin quan:

o o o o o
Constructor khi to: * JCheckBox() * JCheckBox(Icon * JCheckBox(Icon * JCheckBox(String * JCheckBox(String

Demo c v Ghi File bng Java nhp liu t bn phm [Java]Lp trnh giao din bng Swing (Phn 3) [JAVA]Lp trnh java Swing (Phn 2) Cc bc to ng dng vi RMI [Java]Tm hiu I/O Stream trong Java

icon) icon, boolean selected) text) text, boolean selected)

* JCheckBox(String text, Icon icon, boolean selected) Mt s phng thc dng vi JCheckBox: * public boolean isSelected(): tr v true nu button c chn, ngc li th false

* public void setSelected(boolean b): thit lp trng thi ca button (nu b l true: button c chn, ngc li * * * public public nu public void b String setText(String Icon l false). getText() text) getIcon()

* public void setIcon(Icon icon)

Code:
import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JCheckBox; import javax.swing.JButton;

import java.awt.GridLayout; import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class JCheckBoxDemo extends JFrame implements ActionListener { JPanel panel; JButton buy; float price[] = new float[]{785,580,1300,1695,900}; public JCheckBoxDemo() { super("JCheckBox Demo"); buy=new JButton("Generate bill"); panel = new JPanel(new GridLayout(5,1,10,10)); panel.add(new JCheckBox("1 - ACER Aspire 4710")); panel.add(new JCheckBox("2 - LENOVO G410")); panel.add(new JCheckBox("3 - HP Compaq V3615TU")); panel.add(new JCheckBox("4 - SONY VAIO SZ340P7")); panel.add(new JCheckBox("5 - HP Compaq 6520s")); getContentPane().setLayout(new BorderLayout()); getContentPane().add(new JLabel("List of product:"),BorderLayout.NORTH); getContentPane().add(panel,BorderLayout.EAST); getContentPane().add(buy,BorderLayout.SOUTH); buy.addActionListener(this); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300,300); setVisible(true); } public void actionPerformed(ActionEvent ae) { Component [] com = panel.getComponents(); float total=0; System.out.println("---------------------------------------------"); for (int i=0;i<com.length;i++) { JCheckBox ch=(JCheckBox)com[i]; if (ch.isSelected()) { System.out.println(ch.getText()+"\t\t"+price[i]+" (USD)"); total=total+price[i]; } }

System.out.println("---------------------------------------------"); System.out.println("Total price:\t"+total+" (USD)"); } public static void main(String args[]) { new JCheckBoxDemo(); } } on code trn to ra 1 ng dng n gin m n hin th ra danh sch nhng sn phm v gi tng ng vi s la chn t pha ngi dng.

También podría gustarte