! " #$ % &"' ( ) % ) ( # " &* ( #$ &+ ,- ( . /$ % )# " # % &+ ( 0! -1+* ( ) # 2 &+ ( # " 34# " 5- ( '- ( ( )+ 2 6 +& 0 ! ./5) % * 2 ,#$ ( ) # 2 &+ ( 7 ( )$ % 89 6 :3:7 ( ) 6 ;0<3 :3 4=- >? @0A1+?B-)CD)0?)'EF&+G? 3+CH @0?)I)CJ'K&L)?)E)MFN))OP&-?)I) 0! Q1+R) S&-)I)?>'BT)MFCMO3 ;3 % )U % * ( )# % )7)+ 2 +) % ) % )-) * % ,* 2 # 2 &+ ( ) % ) - ( ) % )) % * ( + 1+ 2 3V % &+ ( #) % )- ( )#$V * 2 ( &* ( ,- ( #$ &+ 5) % ) 1+ 2 0 % ) % ) # ( U* ( #UV % ))+- ( )+- % )+ ! " 0 * ( ) # 2 &+ ( ) % )U % * ( )# % )7#* % - ( )#$V # ( ) # ( 3 W3 # 2 &+ ( ) % ) X#$ % &") % ) # 2 &+ ( -" Y'+5'0!5) % ) !Z[ .V )+) % ) )+#$# ( #) % ) \]3+*5 )+ % ) % - ( - % V % 7$ % 3V % &+ ( #'+50'!0) % * 2 ( V 2 5333/ ^3 # 2 &+ ( ) % ))# % )7U % ))+ 2 3 4 % ** ) % ) U % ))+ 2 #) 5'&! 5) 5 ! 3 4 ! " ) #$ % &"' ( ) % ) ( - ( )#$V ,+* % .+0!&!&/ _3 % ) `a+0 ,- % #$ ( )# % 3 X#$ % &") % )) ( - ( .0+!/5) % ) # 2 &+ ( )+ 2 -"0$ % 0+! )+) % 3 b3 % )* % - ( # ( U* ( ` !! X#$ % &") % )7 % '7 % ) % ) # ( U* ( )#$V c3 ` * ( )$ % ,- ( # 2 &+ ( ) % ),#$ ! " 5) % )!Z,* 2 )* % ( - ( V 2 5U* 2 ) 2 ) % )V 2 ,- ( 3 d3 +* 2 ,- 2 X#$ % &") % ))+* 2 ,- 2 - ( )#$V # 2 &+ ( \]\:3: )#$V # 2 &+ ( ) % ) 3 ! "!# $ % &' "()$* %* +,-% &' .+&0 ! /0 - ( ( $ ( ) % ))# % )7+ % #$ &+ Z&# ( &* ( ,- ( . /3,#$ ( ))-'- % 0 , +* 7:eec- ( ( * # " % * 2 a!5'- # " )# % )7 + :3 % ) ;3 X-"$ ( 0+'0!`U&!!0 W3 +) ( \ ^3 ;8\.;0<0/ _3 X-"$ ( 8&8.;0<0/ W)# % )7, +)+ 2 ,#$ ( )# ( )* ( U-) ' 2 " 1+- % ) &# ( ) % ) \) % 89:3: . * / &'01 \, " ,#$ ( ) # 2 &+ ( ;& ( + .:/ ` )- % 0 " )+ 2 ;0<.*' 2 )+ 2 )+ 2 :3;f:3W/ .;/ :3:. # 2 &+ ( $ % 89:3:/ $ % -"*' 2 # 2 &+ ( 5+ +- ( ) * ( ))+ % ) ,* % 89:3:0 ; 0< U-) 2 *' % U #* ( ") % * 2 # 2 &+ ( ,#$ ( ) \3+*5* % +) # 2 &+ ( 89:3:V * \. # 2 &+ ( :3:/ X " +, " % * +*' 2 )+ 2 :3: ,* 2 ( '* % % 0 *' 2 V ) &# ( *' 2 )+ 2 \)# % % 3 g 2 +,0* ( U*) % )-* \3 &' 01 234/ % * +,-"(" % * +%5 067/48 9&4:/; - < :3h3W +,-"(" 9' &'"(=(>; Không *' 2 )+ 2 :3:'- +%06? "("("3 :3: +,-"(" 9'&'"("; %"(55%"(5(" *' 2 , +*) % , ,+ 2 :3:\ - 2 $ ( ,* 2 # 2 &+ ( ) % ) 2 #$ ( 3 +% 06? "("(5 +% 06? "(5 )+) % 0!- 2 $ ( )# 89:3:i :3: ;0<:3;#$ # % 3 :3:3: +,-"(" 9' &'"("("; %"(5(5 * ) % )V % 7$ 2 - ( 5 Z# " 0 % * +0-"U " + ( 5) % ))# % )7$ % .\ U-) ,- 2 /):3:3 +% 06?"("(> +%06?"(5(5 )+ ) % 0!- 2 $ ( )89:3:i:3:3: ;0<:3;3;5#$# % 3 Không co ́ sư ̣ Không co ́ :3Wg! * ) % )V % 75Z# " 0 % * +0-"U " kha ́ c biê ̣ t vê ̀ "Swing" version + ( 5) % ))# % )7$ % 3g- 2 +*) % ) V % 7 ) % ) \$ % 30+N :3Wg!)+) % 0!- 2 $ ( )* ' 2 3 - / &' \# 0$ % ( 50 ( # * &! " 3*' 2 :3:)+ 2 \) % :_ % &+ )+ javax.accessibility5 javax.swing5 javax.swing.border5 javax.swing.colorchooser5 javax.swing.event5 javax.swing.filechooser5 javax.swing.plaf5 javax.swing.plaf.basic5 javax.swing.plaf.metal5 javax.swing.plaf.multi5 javax.swing.table5 javax.swing.text5 javax.swing.text.html5javax.swing.tree5&javax.swing.undo3 +* % ) % ))#$V )V 2 # 2 &+ ( - ( 2 )+ 2 \5)+ 2 * % +0 ) % ) % javax.swing, javax.swing.event. & * &'% % ) \],#$ ( ))+) % 89:3h :3:367 ( )&+ ;0<" ) -"$ ( ) % ) \]5+*5)+ % * ) % ) 39 # 2 &+ ( 5) % * 2 '* ( ) % ) $ % ) % ) \]3 % ) ) % *'7 % , +'7 U % # ( 3V % &+ ( #50$ % \]'+)0 ) % *0 Button V 0$ % '+) % *0 Jbutton. 4 5) % ) \]V 7 % java.awt, ) ) % ) V 7 % javax.swing. 8, % 5U # 2 &+ ( ) % ) V U' % )+ 2 )#$V 5$ % * & 0* ( + import javax.swing.*; # ( U % )'* ( 0$ % % # " ) % ) \] , % 0 ) % ) ,#$ ( )# ( ) U-) " +- .' 0+!0!)&!/39* 2 # U) % ) U-) ' ( ( )* % # " U+-"+-#$ 5.! 0! )&!/5# % )0 0+ % ) ) % )V % 7)+ 2 % , " ) % 7 ( +* % ) % ) *' 2 5V ) % ))# % )7)+ 2 % , " $ 2 - ( $* + $ % ) % ))# % )7)+ 2 ) % ) \]38) % ) U-) % " +- .!)&!/5*)+ % ) % * 2 ,#$ ( )* #0 - ( &&N)+ 2 89:3:#- ( )+ 2 ; 0<3 4) 2 # " ,$ 2 % )+ " , " ) % # " U 2 7#$ ( Z) % ) \] • '+ 0'!0 ) % * 2 * 2 ( V 2 ) 2 7' 2 3 • % * 2 &*"& ,- 2 ,#$ * )+ 2 +* % ) % ) 3) % * 2 &*"& ,- 2 ,#$ * )+ 2 - ( 0'!0- ( ,- % #$ ( )# % , % 3 • % * 2 &*"& ,- 2 &* ( )+ 2 - ( #$# % ),* +U* 2 )+ 2 % 7 ( ) ( - ( 0$ % ). +')0 /)+ 2 )V % , % 3 • U-) % V )# " ( 38, % 5) % )+ % 0* ( ) % * 2 ) % V 7 ( )' % )3 • 9 " + ( -"$ ( .\ !!)0! /1+* ( ), ( ) V ) % * 2 &* 2 & 0 % -# ) % ) 3 5(!* % 8 4< &' j* 2 * % - ( )#$V # 2 &+ ( ) % ) 5#$ % )*5 2 ) % *' 2 )+ 2 89 #$# % 3g*& ( ) # ( )- ( )#$V ) + +- ( ) * ( ), # 2 &+ ( 89:3:;0<34* % + # 2 &+ ( ;0<V ! " ,$ 2 $V , " ,#$ ( )V % )$ ( 3 ;3:g*& ( ) # ( ))#$V $ % ;0<5:3;:3W 5)+ % ! " U 2 % ) % ) % ,* 1+V % &+ ( SwingApplication.java ) % &* ( # + +,0 ) % )'#$ % )V # ( )* ( )'*& ( ) # ( )- ( )#$V $ % ;895:3;:3W :3 4* % +)#) % 5) ,7 ( % *' 2 ;0<3 ;3 ( - ( )#$V # 2 &+ ( ) % ) 3 W3 g*& ( ))#$V 3 ^3 # ( ))#$V 3 X* ( 5,) % ;*' 2 )+ 2 ;0<5 % ) 2 ,* +*"V % &+)+) % .' ( ) % * 2 , ( )V 2 ,* 2 ,#$ ( )- 2 $ ( 3 +3)/3*' 2 # % % 0 :3;.;895&&k&:3;/ *' 2 # % 0 :3W.;895 &&k&:3W/3 j* 2 ( - ( )#$V # 2 &+ ( ) % ) 5) % * 2 # 2 &+ ( )#$V "+ )+ % -)+) % +,\0)3l3 0#+ % 0 *<0! 2 )V % Z % ) 0 m\0)3lm lZ3 3no !<0)U!!3 )3 +3l3 3no !&'89:3;g!^&00 !0! ! '!<!:3:g!W3 l33no l33!!3no +'0))0 \0)p ! )0'!0!<Zqm4+'!<'+)0)U mo !+0)U qho +'0)!)!!! ./p <0`'!00'!0q!`'!0.0'!0!<Zimhm/o g+'+q!g+.mr'+sm/o '+3 !6!).9!k!39t/o '+3&&\)` !!.!\)` !!./p +'0)&)!<!&.\)k!!/p +0)U iio 0'!03 !!Z.0'!0!<Zi+0)U /o u u/o 0'!03 !`'!0.'+/o n n\! + )!'!!!N0!!0)! n& )! +!)! !0 n m!m'&!3 n !0!q!!0./o !3 !g&!.g&!)3)!!kg&!. Wh5 Wh50!< :h5' Wh/ /o !3 !`+.!&`+.h5://o !3&&.'+/o !3&&.0'!0/o !+!o u +'0) )&.vw /p p 6!3 !`U\&!!0. 6!3! 0<`U\&!!00 4!.//o u)).kZ)!!/pu !!!N0!!0)!&&&)! 3 !<!q!!.m\0)m/o \0)q!\0)./o !)! q3)!!! ./o <!3!!!./3&&.)! 5g&!`+3k4kx/o !+!<!5& 3 <!3&&]&` !!.!]&\&!./p +'0)&&0 .]&k!!/p !3!Z.h/o u u/o <!3)U./o <!3 ! '0!.+!/o u u g#$ % )* % !0 '*& ( )3* ( )'*& ( )$ 2 *,$ 2 &* 2 & $ % ;89 U) % ) % ,#$ ( )V % )$ ( *' 2 &&k&)+ 2 ;0<3 +0* ( # + l)N&!!)\0)3l #$ $ ( U'*& ( )U- )-5) % * 2 0 &' ( , # 2 &+ ( V '*& ( ) 89:3:V :3;7 ( ):3W7 ( ), # 2 &+ ( ' 2 '!)+ 2 ;0<3 # ( ))#$V ! " ,#$ ( )# ( )* ( U, " '*& ( ) )-3 , 2 ' 2 0 )0 , " )V 2 ,#$ &",* % <0!# ( ) &lN)0 3oyly0<&y!0<3l\0) `#+ % U-) 2 2 ,+-$ 2 - ( 3)0 3V -& ( ))+ 2 *' 2 :3; :3W ! " # ( ,- ( & V 3 ;3;g*& ( ) # ( ))#$V $ % 89:3: + " #$# ( #$ % ;0<5#V '*& ( ) # 2 &+ ( $ 2 ,0 89:3: :3:3 >( &'63 z* 2 * % - ( \0! 5#$ % )*0 2 # ( ),#$ ( ))+ % 3 ! " $ % * ( +; 0! 3 +,0 " )+ 2 0! X!00\0!3l lZ3 3no !<0)U!!3 )3 +3l3 3no !&'89:3;g!^&00 !0! ! '!<!:3:g!W3 l33no +'0))0 X!00\0!!Z!& \0!p )U&+0!! !:3:3 +'0)X!00\0!./p !x!./3+0!!.m&!<! !k!{+!+!!)Um5 g0!3xk/o u +'0)&./p `'!00'!0q!`'!0. m|+! +))! <+00+0!sm/o 0'!03 !X}0\0!.`'!03k4kx/o \&&'&!3+0&+ !)!!`!g&!5'+!!' &0!<0! &r!NN !! '!<<N'N!!3 0'!03 !g&!.g&!)3)!!6!g&!.:5:5;5;503'0)U//o !!!./3&&.0'!05g&!`+3k4kx/o u u z* 2 # ( )- ( \0! 5!V # ( ) % )'#$ % ) + .:/ z 2 ' 2 0 , " ) % V &+* ( :3:7 ( ):3;7 ( ) 2 * 0+N )+ % 0 # " *' 2 $ % % 3#$ $ ( U-) % ) % )# % *5) % * 2 # 2 &+ ( \0!!!.appletviewer/3 .;/ 4* % +' ( , # 2 &+ ( V &+* ( :3:U-) % 0+NV ) 2 ( <0! \x V &+* ( 3 .W/ 9* 2 0 ( Z!V &+* ( )+ 2 ' ( , " )V 2 )#3 ( ' V V &#$ % ,U* 2 )# % )V &+* ( )+ 2 ' ( 0 , " , % # % )#34* % +V &+* ( )+ 2 ' ( Z+ % * ( 0!#&#$ % ,V a93 #$ $ ( )V 2 % - ( V 0!7 ( )U- % ) % )V 2 V V &+* ( )+ 2 ' ( )## ( ) # ( 7" 3 @(4/$ *8%* 8 &' 5)+ % ! " V * 2 +*-1+)#$V SwingApplication. SwingApplication ! " * 2 ( )# 2 - 2 # + " )+ 2 SwingApplication.java # ( )* ( # " )-* ( ) + ^3: 18/4&'3 8 0* ( + ! " % )V % lZ3 3no `#+ % :3: ;89:3;*' 2 '! # 2 &+ ( * ( U % ) +) % 3 X +* % ) % ))#$V ,* +) % )V % )+ 2 \]0 l33no l33!!3no ^3; -//36//7336 )! % ' ( )V 2 , ( " ~0U&<!!0• )#$V )+ 2 ' ( # 2 &+ ( NN 0U&<!!05]& 0U&<!!058k6<0U&<!!05333z ( " , ( &#$ % , ! " )V 2 )' ( ) % ) SwingApplication)V 2 , ( ~0U& <!!0• +'0) )&.vw /p p A134(3B//,3369 A134(3-4/067/48B//,336-6.839;;C u)).kZ)!!/pu .//Create and show the GUI . u ^3W € % )0 ( ,- % #$ ( )# % # % ),V 2 6-")#$V ,#$ ( )V &*",* +) % &* ( $ % # % ),$ 2 % 0 - ( ,- % #$ ( )# % +- ( ) )+ 2 $ 2 # % ),V 2 3• 2 +* % ) % )# % &+ ( 5 ,- % #$ ( )# % $ 2 # % ),V 2 ) % * 2 0 JFrame5JDialog57 ( ).)0! / JApplet36-",- % #$ ( JFrame ! " # ( )* ( - ( )# 2 - 2 )V % -"JDialog ! " # ( )))# 2 - 2 # % 36-",- % #$ ( JApplet# ( )* ( * ( )* 2 ( )+ 2 - ( 0!'*- ( )# 2 - 2 3 % ),- % #$ ( )# % # % ),V 2 )+ 2 )+) % ) % ) - 2 $ ( ) * % ,* 2 ) % ) # ( )* ( * ( )! " 1+ 2 0 % ) % ) 3 A&‚\0))ƒ)„,…#†)‡‡),ƒ0f!39#ˆ # 2 &+ ( ,„<!# % &+ ( ‰Š3zH +,ZŠ)0=f)‹Œ <! +'0))0 \0)p 333 +'0) )&.vw /p 333 !<!q!!.m\0)m/o // .create the components to go into the frame . // .stick them in a container named contents . <!3!!!./3&&.)! 5g&!`+3k4kx/o !+!<!5& 3 <!3&&]&` !!.333/o <!3)U./o <!3 ! '0!.+!/o u u ^3^ € % )0 ( '+ 0'!0 …# 5&•)ŽSwingApplication)‡'+f0'!03 zH +,U•'+,„ .:/g+'+q!g+.mr'+sm/o .;/'+3 !6!).9!k!39t/o .W/'+3&&\)` !! create an action listener ./o 8•0•.:/,‹‘0•*+,’mr'+sm38•.;/ZŠ) 0=U!,„•#$“# “U•#ˆ&”UA)f‘0•.‡)0fU #ˆ&”•\0N–)”#$“#UA))+f‘0•/38•.W/ ,7U—•)˜'˜ “U•)•)UA)‘0• zH +,U•f=f,)Ž0'!0 //where instance variables are declared: ! )0'!0!<Zqm4+'!<'+)0)U mo !+0)U qho .//in GUI initialization code: <0`'!00'!0q!`'!0.0'!0!<Zimhm/o 333 0'!03 !`'!0.'+/o .//in the event handler for button clicks: 0'!03 !!Z.0'!0!<Zi+0)U /o zH*,$™5š&•U•,#$‡) !`'!0./34 % Z+ % * ( $ 2 , - % # # ( $ ( % * U 2 + ( - 2 $ ( # ( ) * % . ! !)0! / -1+, % 5- ( 0'!0,#$ ( )- 2 #0 - ( '+3 ^3_ * ) % ),- % #$ ( )# % 3 SwingApplication % 0'!0 '+ - ( ,- % #$ ( )# % .JPanel/ #$ % )U* <!- ( U % )3z ( " +,U$ 2 ( - ( !0 .:/!0!q!!0./o .;/!3 !g&!.g&!)3)!!kg&!.Wh5Wh5:h5Wh//o .W/!3 !`+.!&`+.h5://o .^/!3&&.'+/o ._/!3&&.0'!0/o 8 .:/&+ ,* 2 ( - ( !05U' % - ( ,- % #$ ( ) % U* 2 +!0$ % * ( 0 !3 8 .;/,* 2 ( ,#$ * '' ( ))!0, % 3 8 .W/&+ ,! 2 ( - ( ,- % #$ ( 1+ 2 0 % 0+,* 2 % % % ) 2 ) % ) ) % !0 ! " ,#$ ( )* 2 ( *- ( )- ( 3 8 .^/ ._/&+ ,* 2 ,#'+ 0'!0 !03* ( )*'+ 0'!0 !0) % V " 0 )+ % ! " ,#$ ( ),* +U* 2 '$ 2 0+1+ 2 0 % !0 , % 3 ^3b *,#$ * .'&! /Z+1+- ( 3 z ( " +, ! " ( - ( ,#$ * )- ( !0 !3 !g&!.g&!)3)!!kg&!. Wh5 Wh50!< :h5' Wh/ /o ,#$ * ,$ 2 )V 2 )+) % - ( + - % )+ 2 !03*WhZ!0 )50!<5 5 :hZ!0 )'3g&! 0 V % 7 !0# U* % # 0$ % !3 ^3c X&0!! SwingApplication )# % ;!!&0! 36- ( 7 % '7 % # ( U* ( UV % ) + % 0* ( .)!! /3 % U,* 2 7 % '7 % # ( U* ( , % )# 2 - 2 .&!! /3+ ,0 , ( " 1+ 2 0 % ) % ) # ( U* ( )+ 2 SwingApplication '+3&&\)` !!.!\)` !!./p +'0)&)!<!&.\)k!!/p +0)U iio 0'!03 !!Z.0'!0!<Zi+0)U /o u u/o 333 <!3&&]&` !!.!]&\&!./p +'0)&&0 .]&k!!/p !3!Z.h/o u u/o ^3d 8!0!& +! #$V SwingApplication0 - ( * % V 3g$ 2 V 5- ( U &* ( )+ 2 % ,,#$ ( )* 2 ( . '0!/5V % )*&* ( )+ 2 % )V 2 Z 2 )- ( !!&0!39-* 2 ) % * % V )+ +Z+ % ,* % - ( )+<- ( $ ,* 2 3 ^3e + !!)0! X-"$ ( !!)0! 5- ( * % ' ( - % #,* 2 , ( ) V 5)+) % ) % ) # % ),* 2 Z# 2 0 % -*3X-"$ ( , " ) % +* % ) % ) 3SwingApplication) % - ( )-",* ) ( ,* % U " + ( 0'!03 !`'!0.'+/o 4#, " % 5* ( )0 % -# ) % ) 0 ,* +,,#$ ( )1+5 U " + ( *, " + % ))-* ( ) ,#$ ( )# ( )* ( - ( ) % )&*"& g+'+q!g+.mr'+sm/o 0'!0q!`'!0.0'!0!<Zimhm/o 0'!03 !!Z.0'!0!<Zi+0)U /o [...]... thì phải biên dich các tâ ̣p tin sau: ̣ Converter .java, ConversionPanel .java, ConverterRangeModel .java, DecimalField .java, FollowerRangeModel .java, FormattedDocument .java và Unit .java Sau đây là hinh ảnh minh hoa ̣ về giao diên của Converter: ̣ ̀ Trong các bài ho ̣c sau, chúng ta se ̃ tim hiể u chi tiế t về các tinh năng, khái niêm về Swing ̣ ̀ ́ Chắ c chắ n sẽ còn nhiề u thú vi... này , chúng ta sẽ tiếp tục xem xét thông qua ví dụ SwingApplication đã được mô tả trong phần A Quick Tour of a Swing Application's Ví dụ này sẽ đề cập đến một vài thành phầ n Swing thường dùng và cách thức chúng tương tác với nhau trong một GUI và của sự phân cấp giới hạn SwingApplication tạo 4 thành phầ n Swing thường dùng như sau: • một frame, hoặc một cửa sổ làm việc chính (JFrame) • một panel,...JFrame frame = new JFrame("SwingApplication"); Bài 2: Các khái niêm và chưc năng của Swing ̣ ́ Trong bài này sẽ giới thiê ̣u các đă ̣c trưng của Swing và giảng giải các khái niêm cầ n ̣ thiế t để ba ̣n có thể nắ m bắ t và sử du ̣ng các thành phầ n Swing mô ̣t cách có hiêu quả ̣ Phầ n cuố i của bài ho ̣c này sẽ phân tích mô ̣t chương trinh Swing và đây se ̃ là phầ... này 1 Các thành phầ n Swing và sự phân cấ p giới han ̣ Swing cung cấ p rấ t nhiề u thành phầ n GUI chuẩ n như: buttons, lists, menus, và text areas, là những thành phầ n mà ban sẽ phố i hơ ̣p để ta ̣o nên GUI cho chương trinh của ̣ ̀ ba ̣n Ngoài ra, còn có các đố i tươ ̣ng chứa như windows và tool bars Trong phần này , chúng ta sẽ tiếp tục xem xét thông qua ví dụ SwingApplication... hoa ̣ về Painting (An Example of Painting) Để minh hoa ̣ cho quá trinh painting, ta sử du ̣ng la ̣i chương trinh SwingApplication ̀ ̀ Hinh dưới là giao diên của SwingApplication: ̣ ̀ Sơ đồ phân cấ p: Khi GUI của SwingApplication đươ ̣c ve, quá trinh đó xảy ra như sau: ̃ ̀ 1 Đố i tươ ̣ng chứa mức đinh, JFrame, sẽ vễ la ̣i nó trước tiên ̉ 2 Các đố i tươ ̣ng chứa trung gian, trước... chứa các thành phầ n Swing khác AWT thông thường, các thành phầ n cơ bản này sẽ là nơi để nhâ ̣n thông tin đầ u vào từ phia người dùng Swing API cung ́ cấ p nhiề u thành phầ n cơ bản, bao gồ m combo boxes (JComboBox), text fields (JTextField), và tables (JTable) Hinh dưới đây là sơ đồ phân cấ p giới ha ̣n của các thành phầ n trong ví du ̣ ̀ SwingApplication Như hinh... } 6 Những tính năng và khái niêm khác của Swing ̣ Swing cung cấ p nhiề u tinh năng Rấ t nhiề u tinh năng đươ ̣c cung cấ p bởi ́ ́ JComponent class Mô ̣t vài tinh nằ ng thú vi ̣ sẽ không đươ ̣c đề câ ̣p đế n trong bài ́ ho ̣c này như icons, actions, công nghê ̣ Pluggable Look & Feel, assistive technologies, và separate models 6 .1 Những tính năng của Jcomponent (Features that... thành phầ n 6.4 Support for Assistive Technologies Assistive technologies such as screen readers can use the Accessibility API to get information from Swing components Because support for the Accessibility API is built into the Swing components, your Swing program will probably work just fine with assistive technologies, even if you do nothing special With very little extra effort, however, you can... assistive technologies, which might well expand its market See How to Support Assistive Technologies for details 7 Phân tích mô ̣t chương trinh Swing ̀ Bao gồ m mô ̣t ứng du ̣ng nhỏ về Swing với tên go ̣i là Converter sẽ mô tả cách mô ̣t chương trinh Swing làm viê ̣c và mố i quan hê ̣ gắ n kế t nhau giữa các đoa ̣n mã trong ̀ chương trinh ̀ Converter là mô ̣t ứng du ̣ng dùng để chuyể... các chương trinh Swing đơn giảnn nhấ t cũng có nhiề u ̀ ̀ mức khác nhau Nhưng bao giờ gố c của sơ đồ vẫn là đố i tươ ̣ng chứa mức đinh, nới ̉ để các thành phầ n Swing khác thể hiên sự tồ n ta ̣i của minh ̣ ̀ Mách nước: Để xem sự phân cấ p của bấ t kỳ frame hay dialog nào, chỉ cầ n kich chuô ̣t vào border của nó để cho ̣n, nhấ n Control-Shift-F1 ́ Mỗi mô ̣t đố . )+ javax.accessibility5 javax .swing5 javax .swing. border5 javax .swing. colorchooser5 javax .swing. event5 javax .swing. filechooser5 javax .swing. plaf5 javax .swing. plaf.basic5. javax .swing. plaf5 javax .swing. plaf.basic5 javax .swing. plaf.metal5 javax .swing. plaf.multi5 javax .swing. table5 javax .swing. text5 javax .swing. text.html5javax .swing. tree5&javax .swing. undo3