!"#$%&' ()*+,#%-./0,12,3+#$%&"3, '4/35,6789:, ! ;</,=8 5"68 !>?@? A%&B =<,,+%&(()C,= !"#$ 4#$%&DC*E).8!+%&1F$%& " G88H:#$%&1F"I$%&8J' ;5"),+%&6/3(+%&()/01DC$%& 8J4+%& K K (J?#()C"8JI5 &1"!"13,) %&'() %*+(), %"-"./0 L)%68"068"M8N,O"PQI85",%I #%-'4D"PQ8J"I(C,"RM !' 121343536178 1-"(!9&":;<=>*?+1@"9;*A@?+1*"@?+B??+C@?+@AD@/? LS80L(1T0L0G0U8,0%VTW%8.)&8(C 13';</X1.C#$%&T</%Y, !>?@?'Z #$%&(J,8(CH0"J%&([8",\/ (.J,,VT!DB)1,Y(I?LV]4^_@_4V'U5= +8(CDDC3Y(I1F"I$%& + 1-"""9-"(&/#E() %*"FGH?=/@,?+",*//;,?+@A,@? Z8(C 13()QJ=01DC$%&`1% VT?C.%8#$%&"'G`1=$%&3+a b8"='`1()=YF,G0VT?" 5=`c' GVT?* 38."-CCE/d$,"%Q"a13 I*J%K)@*LM=1 ?@? GL"d1",6e,!'@:L"01DC"B !3e,!,! %K)B;@/? G1* 3CCE,%fQ"a13()C9Y 1-"(MGN"O=8*P?+5@/?+",*//5@? ?gV8.h(C85=+0.3=YI:L'G g%ij0Wj0"W,8.$X%-C+6'c% %-CD,6,"-:$X'`cO5c0D k1I bDCE,6()D"()0)#%- 8C8(CCE,6D:6 W,,$X(,0("$X%j0$X%jB &8H$X%W, > 121BQ58R321 ?gV+86('4D+DH78"I"B"[,1[Y(I'c6 /\38" :?gVDD l"'i'?gV+D( l"'i',"l"'i',68 !()$%&D'G"%I D/B=(6 mDl"'i,"/E*@,'mDl"'i8.""(J"!%' G`12,c0n0%c/' GL.J="I,H83",8['4DEoF5 ,8=%-X1L'1('V(,8$%&X1E%nmS%p p180!DODCC8=,8%q`S8p8p1' r G,8.!%s%I83'U+%&DC./5=, 3mW">c_m1F%- +,' S TUV121343536+121R3WXYZU[C\ ' `$%&6:?gV q!"B8./I5<.DJt(6:?gV' ]1l u U8L, u vppppppppppppv uu U8,U8S u vppppv uu U8L(1TU8, L78/[8($%&6 B%]%*(&^J%K) %*J(MGN"O Z191/0H\e'Sw()D6t$XYCEH,! ='V13H,D",5=+'S3<5=+/, 60ODC=H,"5=+('g%iOW,%jD 5=+,+.xD6()H,"=5=+ (' GLEoh +"IH,6"b, + ,)5"r +D)5'4D&8"15J:,5 =+%-' c +%%,)5)#*/H868*E6H,"'c + %%r)5'c +r)568Hd1H,,)5*E"EJ, 6=H,"'V)5+r: +%%r)5+r*E 6=H,"L'V)5688M&8' L\ebVH,,6"L8/C6DtL+D L('@!()CD,6rL0/3(rLD ()T8.I-,\H,!' 1-"/K%K)""#K"-$ V.36tU8=Y:L,'4Dt (6+a:/ 1-"_,N":;<"* " ` GL,8. +08%0"CX="I"B 1-"?a9 GL,Eo, + %_" ,&J8",D, +[,1[Y(ITE'GL,OY8(Ct 1J,' h b!9&$O"=c* GL,8. +C./"T0"./)"WI b!9&$O"=% G L, 8 . + 8 C ./ " T ,8 " ,8 b W8%L0W8%0S(8%L0%S(8%'U8,8 %-.3"a13D6',8,8F8"a13k3 d;d< GL,8.3"ICE3'G8eF66() CE=3'L""68LDCCE=3' b!9&9e"G" % ',e,^%$ c +%`y",,8,`yd,6(6" (JJ="z.' G,C/X!+"+:,6 q!+:6868&8"c,'S8wI5U( "S8wI5U' S()C%s%/X!+:6'1*DC/X, 6z!+:6D,)/XW",8' Uk%-1()C/X!+:601DC/X T$:D'@J%&08*DE5,-="VT%0!1DCY VTW%(C,,9E":1J,0()E()3)'{ • >*? S8,)&8(C 3C,Y(I(#$%&. "D' q!+:S8H,!&8",D/"DD=Y /()'481,85S8: !58w,9kk 1I01H,L"C,=!:\e,85x1()C %-S8C/X!:\'d:!+:,S8DC /X=W"8MCE0,8",8:D0""DDC=/ ()' `8</,?CEhS8'Z1(J8"\1H0DB,\ ()=Y"D,D()CY",\3 =Y'Z(J8"\1H30D(JY:\"\ ",DB()=Y' ! " # $ % $ %&'()* () +*,-./ ! " $ 0 +$*,-./ % " $ | 0 + 0 • 1 ?@? GL"Q,'4D(),!13<DxD*8.1 Y6Y'@J%&0L".8="ICE"-:!30 1.+#=1-DC[,1[=Y(IT3/85#C E3' L"O8H(8(CppS80T,}D()5YYE,k E:,8(C'@!BF1()C/X!+:8(C8N1F ,6 +""J%&S80%D13Y L"C1DCD!+e,85"T$ YYY,kE: 8(C' ZY,L"0N(Y + ,,8,`y " %`yC,(J\[L"'Uk(0-8"15 :5=+L"0L"DCD(J78z0D(()./- H' `8</,?$%&r#=:L"81b,L"' `8</,,~I:,L"'Sw"!%I3=3"()21H ,L"()1Y :D"</8(D='@!e%/0 ,L"%-"168C3((J:3T E=!D,/X(J:D' 1&21&* 1. 34+ !3 '- 1&'1' 5-'6-* +* 3. 1&&)7 0 - . 5- -6- 3!'- 0 !+3* 3 0 .-!3* 3 0 &8-* +7* • +734* 5-5-- 6-6-- +5-9:;;6-9:* 34 (- 5- -6- 3!'- '- .. . 0 0 <:':''- ':':'- 0 0 0 • 1@"9;*A@? GL(1T8.-/2}r:L(1TDC€•k€•'Z #$%&.8"L(1T0:L(1TB/X"3",Y(I' Uk(0DOD,6C#%-DC9L0G0"U8' 481,85,D,L(1T,*D,L(1T,#C,w€• !1DCH,",5=L(1Tm8C,L(1TD' @J%&b ='" 1-/2'"'$,--/2 1-/2>'?'@,--/2+ 1-/28 1-/2!+ ++ + 1-/2 "1-/2 1-/2" $1-/2 1-/2$ $33 1-/28 >1-/2 1-/2> ''++++ ?1-/2 1-/2? ''+++ @1-/2 1-/2@ ''+++ • 1*"@? GL8.,Y CY908/1F,\k1I'#$%&. \D"DBI,,8"1DC9,+,8D'Z#%-90D B32,Y(I' @J%&b 5-&+ 1--+- 5- -1- - - - ‚ - - . ,2-32'-3 %&'()* ++1-* ,2-32'3 0 + 0 0 • U/*? ?gV8.X=}$X&8"$X(ƒ" j'4D8.8JbWj08.,$X,1DC,w k8' U/85C<1Ij"$X)#(j&8"$X (W,'Z$XD!j&DO1,.'Z$XD= 8zj&8DB()T8.IH,!'Z$X=w"(J )#!jDBCE,!'?gVY8.!+/ 1' jDC'U%%QzYa,D(„R:#$%&05"I #$%&,1.+!(H+%&(j~=1z @J%&b 3!2!* ,2A+ !5 3!A'3* ''+ !5 1'-- -+ / 0 %&&'()* +& B&+,2A* ,2+,2 0 +C - 0 0 • D,@? GW,8.$X"'UM+%&3DJ.W,' 48,+%&D$X&8"$X(!1H%-j/"!%-W, … $X&8D';()C%-5%0"!"/#$%&# %-W,' @J%&b #52A* CC ,2C #5* ,-.-A -- 0 -%&%&&* +&%&5D!(5E!%3,<(F* +CC* 0* 3.2: 0 0 -%&& 0 &3GH* #5#5 CC+ , #5C / - 0 0 • B;@/? G6 3.:L,0,8M(JYDC=%-,~ L,('G1()$=0D*,~L,(H, ! G=C,:G1"8M(JY)#(b S()3Y"BG1'G16:?gV"?gV%†","I D G18<Y[T:c+D"DCa*"L,( G1+8M()C$X=,*%-C,)36(:?gV ;C,G10$%&,.8\8b G1,~M0"8M=*1H' G1`,8MD%8`O8=*1H' G1`0,~D%8` V,512,b G1'nmqVb8M=*1H3 G1'G_WVb8M=*1H G1'L_4V_nb8M=* SDC/X:G11F +W `8</,"J%&,$%&G1 )&I ,2)&C* &* ‡ AA 6& 'A(!'> .8.$' + '%A, '1%D,%< - '<86, 0 0 • B?? GG8.,"-DC8=,DD+8M"a13DC9= ,%Q,8M'4#$%&DC91(J8'GDCd9 8/*D,YY,#C,' @J%&b 5-& ,2C -' 5- +'-- ->'+>& - - - - - - - '-- !+&'. J J %&'()* ++* 3-K 3- ,2 C&L M3M L MM L 0 0 -%&%&* ++* 3-K 3- ˆ -* %&3,E3%%1, 2N ,2 3&O M2M L M2M L MM L / %&3,E!%3%%1, 2N ,2 !&O M2M L M2M L MM L 0 0 -%& 0 • C@? ?8./8dk:,85,81~$%&'L$X, ,8U8S+a,,8'UM,8+,k8,8 U8*2HU8S"U8S*2(D["$X ;k1I W, ?gV8.U8L,8CX=,8b U8, L(1TU8, U8 U8S ;</,~* +0T$:,8b #52A* #5* # #'"'$'>'>E'? #E'E"'$E'$E"'$E$'$E>' >EE'?E'?E" 1-/2#"E C-.- - # # +- 3+.- /-++ # # ' E# #E E E"# #E" E" - ?# #? ‰ ?)--P/ 6#? ?E# #?E ??E ?E"# #?E" ??E" - "# #" " "E1-/2# #"E ""E -- $# #$ $ $E# #$E $$E $E"# #$E" $$E" $3 $E$# #$E$ $$E$ $E># #$E> $E> $$E> +-- ># #> > >E# 3>E >>E >EE# #>EE >E>EE 0 %&&'()* 3 C +&+#* ##& M M ++1-/2#* M M1-/2#3 M 0 #1= ++#* M M# 0* M -P# 0 0 M L !.-- [...]... have, thường là 0 int maximum Giá trị lớn nhất của scrollbar Sau đây là hình vẽ minh hoạ ý nghĩa của các giá trị trên: 12 Sau đây là đoạn mã cho Aplet trên import java. awt.*; import java. applet.*; import java. net.URL; class ScrollableCanvas extends Canvas { Image image; int tx = 0; int ty = 0; Dimension preferredSize; ScrollableCanvas(Image img, Dimension prefSize) { image = img; preferredSize... phương thức thường dùng sau: int getKeyChar() void setKeyChar(char) Nhận hoặc xác lập kí tự liên quan với sự kiện này int getKeyCode() void setKeyCode(int) nhận hoặc xác lập mã của phím liên quan với sự kiện này void setModifiers(int) xác lập tạng thái của phím liên quan tới sự kiện này int getModifiers() Tả về trạng thái của phím trong sự kiện này • Viết... Action Listener Khi người sử dụng kich chuột vào Button, đúp chuột vào ListItem, chọn MenuItem, hoặc nhấn phím trong TextField, một sự kiện sẽ xảy ra Kết quả đó là một thông báo actionPerformed được gởi đi đến tất cả các action listener và nó đăng kí với các thành phần có liên quan Các phương thức, sự kiện của hành động Giao diện ActionListener chứa một phương... n Button X key mouse mouse motion X X X X X Canvas X X X X X Checkbox X X X X X X X X CheckboxMenuItem * Note: This is not a Component subclass! X X Choice X X X Component X X X X X Container X X X X X X Dialog X X X X X X Frame X X X X X X Label X X X X X 20 List X X X X X X X X X X X X X X X X X X X MenuItem X Note: This is not a Component subclass! Panel Scrollbar X X X X ScrollPane X TextArea X... e) { //Event handler implementation goes here } } Giả dụ bạn muốn viết một applet, và bạn muốn Applet của bạn chứa vài đoạn mã để nắm bắt các sự kiện của chuột Từ khi ngôn ngữ Java khhong cho phép đa thừa kế thì bạn không thể mở rộng cả 2 lớp Applet and MouseAdapter Giải pháp là định nghĩa một lớp inner một lớp nằm trong Aplet that extends the MouseAdapter... componentHidden(ComponentEvent) được gọi bởi AWT sau khi thành phần biến mất bởi phương thức setVisible void componentMoved(ComponentEvent) được gọi bởi AWT sau khi thành phần di chuyển, nó quan hệ với đối tượng chứa nó void componentResized(ComponentEvent) được gọi bởi AWT sau khi thành phần thay đổi kích thước void componentShown(ComponentEvent) được gọi bởi AWT sau khi... ActionListener, chứa nhiều hoặc một phương thức Ví dụ, giao diện MouseListener chứa năm phương thức: mousePressed, mouseReleased, mouseEntered, mouseExited, và mouseClicked Dù là bạn chỉ quan tâm về nhấn chuột, nếu lớp bạn đang sử dụng thực thi MouseListener thì bạn phải thực thi tất cả 5 phương thức Ví dụ : MyClass implements MouseListener { someObject.addMouseListener(this);... một thông số đơn : đối tượng TextEvent Lớp TextEvent định nghĩa một phương thức Phương thức getSource mà TextEvent thừa kế từ EventObject, bạn có thể nhận được thành phần Text liên quan đến sự kiện này và gởi thông điệp cho nó • Viết một Window Listener Các sự kiện của Window được phát ra sau khi Window mở, đóng, thu nhỏ, phóng to, hoạt động và không hoạt... Font("Helvetica", Font.PLAIN, 14)); add("North", new Button("North")); add("South", new Button("South")); add("East", new Button("East")); add("West", new Button("West")); add("Center", new Button("Center")); Quan trọng: khi thêm một thành phần vào một Container sử dụng BorderLayout, bạn nên dùng phương thức add() hai thông số, và thông số thứ nhất phải là "North", "South", "East", "West",... biệt, GridBagLayout đủ mềm dẻo để làm việc trong nhiều trường hợp khác nhau Để tạo một Layout Manager, bạn phải tạo một lớp để thực thi giao diện LayoutManager LayoutManager yêu cầu quan hệ chặt chẽ với nó để thực thi năm phương thức: public void addLayoutComponent(String name, Component comp) Chỉ được gọi bằng phương thức add(name, component) của Container public void . Š0*CE6,()d' UkE08:`*CE(6'@J%&08`:CC E6:D1!/8:`B()6" ,kE8:`B()T8.I'q!8./,?D, `0DD38' `8</,~,`"k6"Db `cŒi`cx '%%L,x Z1,,`01DCT)5CTE(CE80$ %&,hE8b 1fgBB>fhhiiUiU mE,kE0CE8(6' 1fgBB>fhB8Z G8)8)CE8' 1fgBB>fhiif Z)1#CE8'SH9E/(1(),85#$%&Y 8(C6,6CE' ;</,"J%&T78/CE8b `crŒi`c`c'`Ln]GGS?n`^?Gg?•`x •