package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjava . awt . event . ActionEvent Ċ import Ġjava . awt . event . ActionListener Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ Ċ private Ġval Ġcheck 1 Ġ= ĠAction Command CheckBox ( Tree Draw s . DR AWS _ FOCUS _ BORDER _ AR O UND _ ICON ) Ċ private Ġval Ġcheck 2 Ġ= ĠAction Command CheckBox ( Tree Draw s . DRAW _ DASH ED _ FOCUS _ IND IC ATOR ) Ċ private Ġval Ġtext Area Ġ= ĠJ TextArea () Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġappend (" Main Panel : Ġinit ") ĊĠ ĠUI Manager . addProperty ChangeListener Ġ{ Ġe Ġ-> ĊĠĠĠ Ġif Ġ(" look And Feel " Ġ== Ġe . propertyName ) Ġ{ ĊĠĠĠĠĠ Ġupdate CheckBox (" UI Manager : Ġproperty Change ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ ĠEvent Queue . invoke Later Ġ{ ĊĠĠĠ Ġval Ġal Ġ= ĠActionListener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠ Ġappend (" J MenuItem : ĠactionPerformed ") ĊĠĠĠĠĠ Ġ( e . source Ġas ? ĠJ RadioButton MenuItem )?. take If Ġ{ Ġit . isSelected Ġ} ?. also Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate CheckBox (" J MenuItem : ĠactionPerformed : Ġinvoke Later ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġmenu Bar Ġ= ĠJ MenuBar () ĊĠĠĠ Ġmenu Bar . add ( Look And Feel Util . create Look And Feel Menu ()) ĊĠĠĠ Ġtext Area . root Pane . j MenuBar Ġ= Ġmenu Bar ĊĠĠĠ Ġdesc endants ( menu Bar ) ĊĠĠĠĠĠ Ġ. filter Is Instance < J RadioButton MenuItem >() ĊĠĠĠĠĠ Ġ. forEach Ġ{ Ġit . addActionListener ( al ) Ġ} ĊĠ Ġ} ĊĠ Ġval Ġnp Ġ= ĠJPanel ( GridLayout ( 2 , Ġ 1 )) ĊĠ Ġnp . add ( check 1 ) ĊĠ Ġnp . add ( check 2 ) ĊĠ Ġval Ġp Ġ= ĠJPanel ( GridLayout ( 2 , Ġ 1 )) ĊĠ Ġval Ġtree Ġ= ĠJ Tree () ĊĠ Ġp . add ( J ScrollPane ( tree )) ĊĠ Ġp . add ( J ScrollPane ( textArea )) ĊĠ Ġreturn ĠJPanel ( Border Layout ()). also Ġ{ ĊĠĠĠ Ġit . add ( np , ĠBorderLayout . NORTH ) ĊĠĠĠ Ġit . add ( p ) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġenum Ġclass ĠTree Draw s ( private Ġval Ġkey : ĠString ) Ġ{ ĊĠ ĠDR AWS _ FOCUS _ BORDER _ AR O UND _ ICON (" Tree . draw s Focus Border Around Icon "), ĊĠ ĠD RAW _ DASH ED _ FOCUS _ IND IC ATOR (" Tree . draw D ashed Focus Indicator "); ĊĊĠ Ġoverride Ġfun ĠtoString () Ġ= Ġkey Ċ } Ċ Ċ private Ġfun Ġdesc endants ( me : ĠMenu Element ): ĠList < Menu Element > Ġ= ĊĠ Ġme . sub Elements . flatMap Ġ{ ĠlistOf ( it ) Ġ+ Ġdesc endants ( it ) Ġ} Ċ Ċ private Ġfun Ġupdate CheckBox ( str : ĠString ) Ġ{ ĊĠ ĠEvent Queue . invoke Later Ġ{ ĊĠĠĠ Ġappend (" -------- \ n $ str ") ĊĠĠĠ Ġval Ġfocus Key Ġ= ĠTree Draw s . DR AWS _ FOCUS _ BORDER _ AR O UND _ ICON . toString () ĊĠĠĠ Ġappend ( focus Key Ġ+ Ġ": Ġ" Ġ+ ĠUI Manager . getBoolean ( focus Key )) ĊĠĠĠ Ġcheck 1 . isSelected Ġ= ĠUI Manager . getBoolean ( focus Key ) ĊĠĠĠ Ġval Ġdas hed Key Ġ= ĠTree Draw s . DRAW _ DASH ED _ FOCUS _ IND IC ATOR . toString () ĊĠĠĠ Ġappend ( das hed Key Ġ+ Ġ": Ġ" Ġ+ ĠUI Manager . getBoolean ( das hed Key )) ĊĠĠĠ Ġcheck 2 . isSelected Ġ= ĠUI Manager . getBoolean ( das hed Key ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġappend ( str : ĠString ) Ġ{ ĊĠ Ġtext Area . append ("$ str \ n ") Ċ } Ċ Ċ private Ġclass ĠAction Command CheckBox ( key : ĠTree Draw s ) Ġ: ĠJ CheckBox ( key . toString ()) Ġ{ ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġaction Ġ= Ġobject Ġ: ĠAbstract Action ( key . toString ()) Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAction Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( e . source Ġas ? ĠJ CheckBox )?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠUI Manager . put ( key . toString (), Ġit . isSelected ) ĊĠĠĠĠĠĠĠĠĠ ĠSw ing Utilities . update Component Tree UI ( it . root Pane ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġupdate UI () Ġ{ ĊĠĠĠ Ġsuper . update UI () ĊĠĠĠ Ġupdate CheckBox (" J CheckBox : Ġupdate UI ") ĊĠ Ġ} Ċ } Ċ Ċ // Ġ@ see Ġhttps :// java . net / projects / swing set 3 / sources / svn / content / trunk / Swing Set 3 / src / com / sun / swing set 3 / Swing Set 3 . java Ċ private Ġobject ĠLook And Feel Util Ġ{ ĊĠ Ġprivate Ġvar Ġlook And Feel Ġ= ĠUI Manager . get Look And Feel (). java Class . name ĊĠ Ġfun Ġcreate Look And Feel Menu () Ġ= ĠJ Menu (" Look And Feel "). also Ġ{ ĊĠĠĠ Ġval Ġl af Radio Group Ġ= ĠButton Group () ĊĠĠĠ Ġfor Ġ( l af Info Ġin ĠUI Manager . get Installed Look And Fe els ()) Ġ{ ĊĠĠĠĠĠ Ġit . add ( create Look And Feel Item ( l af Info . name , Ġl af Info . className , Ġl af Radio Group )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Look And Feel Item ( l af Name : ĠString , Ġl af ClassName : ĠString , Ġl af Group : ĠButton Group ): ĠJ MenuItem Ġ{ ĊĠĠĠ Ġval Ġl af Item Ġ= ĠJ RadioButton MenuItem ( l af Name , Ġl af ClassName Ġ== Ġlook And Feel ) ĊĠĠĠ Ġl af Item . action Command Ġ= Ġl af ClassName ĊĠĠĠ Ġl af Item . hide Action Text Ġ= Ġtrue ĊĠĠĠ Ġl af Item . addActionListener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠ Ġval Ġm Ġ= Ġl af Group . selection ĊĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠ Ġset Look And Feel ( m . action Command ) ĊĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠ ĠUI Manager . get Look And Feel (). provide Error Feedback ( e . source Ġas ? ĠComponent ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġl af Group . add ( l af Item ) ĊĠĠĠ Ġreturn Ġl af Item ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( ĊĠĠĠ ĠClass NotFoundException :: class , ĊĠĠĠ ĠInstanti ation Exception :: class , ĊĠĠĠ ĠIllegal AccessException :: class , ĊĠĠĠ ĠUnsupported Look And Feel Exception :: class ĊĠ Ġ) ĊĠ Ġprivate Ġfun Ġset Look And Feel ( look And Feel : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġold Look And Feel Ġ= ĠLook And Feel Util . look And Feel ĊĠĠĠ Ġif Ġ( old Look And Feel Ġ!= Ġlook And Feel ) Ġ{ ĊĠĠĠĠĠ ĠUI Manager . set Look And Feel ( look And Feel ) ĊĠĠĠĠĠ ĠLook And Feel Util . look And Feel Ġ= Ġlook And Feel ĊĠĠĠĠĠ Ġupdate Look And Feel () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate Look And Feel () Ġ{ ĊĠĠĠ Ġfor Ġ( window Ġin ĠWindow . get Windows ()) Ġ{ ĊĠĠĠĠĠ ĠSw ing Utilities . update Component Tree UI ( window ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠ ĠEvent Queue . invoke Later Ġ{ ĊĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠ ĠUI Manager . set Look And Feel ( UI Manager . getSystem Look And Feel ClassName ()) ĊĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠ ĠToolkit . getDefault Toolkit (). be ep () ĊĠĠĠ Ġ} ĊĠĠĠ ĠJ Frame (). apply Ġ{ ĊĠĠĠĠĠ Ġdefault Close Operation Ġ= ĠWindow Constants . EXIT _ ON _ CLOSE ĊĠĠĠĠĠ Ġcontent Pane . add ( make UI ()) ĊĠĠĠĠĠ Ġpack () ĊĠĠĠĠĠ Ġset Location Relative To ( null ) ĊĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ