package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing . pl af . basic . Basic Tree UI Ċ import Ġjavax . swing . tree . Tree Path Ċ Ċ fun Ġmake UI () Ġ= ĠJPanel ( GridLayout ( 1 , Ġ 2 , Ġ 2 , Ġ 2 )). also Ġ{ ĊĠ Ġit . add ( J ScrollPane ( J Tree ())) ĊĠ Ġit . add ( J ScrollPane ( Row Selection Tree ())) ĊĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) Ċ } Ċ Ċ private Ġclass ĠRow Selection Tree Ġ: ĠJ Tree () Ġ{ ĊĠ Ġoverride Ġfun Ġpaint Component ( g : ĠGraphics ) Ġ{ ĊĠĠĠ Ġg . color Ġ= Ġbackground ĊĠĠĠ Ġg . fillRect ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠ Ġval Ġg 2 Ġ= Ġg . create () Ġas ? ĠGraphics 2 D Ġ?: Ġreturn ĊĠĠĠ Ġg 2 . paint Ġ= ĠSELECT ED _ COLOR ĊĠĠĠ Ġselection Rows ĊĠĠĠĠĠ Ġ? . map Ġ{ Ġget Row Bounds ( it ) Ġ} ĊĠĠĠĠĠ Ġ? . forEach Ġ{ Ġg 2 . fillRect ( 0 , Ġit . y , Ġwidth , Ġit . height ) Ġ} ĊĠĠĠ Ġsuper . paint Component ( g ) ĊĠĠĠ Ġif Ġ( has Focus ()) Ġ{ ĊĠĠĠĠĠ Ġlead Selection Path ?. also Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġget Row Bounds ( getRow For Path ( it )) ĊĠĠĠĠĠĠĠ Ġg 2 . paint Ġ= ĠSELECT ED _ COLOR . dark er () ĊĠĠĠĠĠĠĠ Ġg 2 . draw Rect ( 0 , Ġr . y , Ġwidth Ġ- Ġ 1 , Ġr . height Ġ- Ġ 1 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġg 2 . dispose () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġupdate UI () Ġ{ ĊĠĠĠ Ġset Cell Renderer ( null ) ĊĠĠĠ Ġsuper . update UI () ĊĠĠĠ Ġval Ġtmp Ġ= Ġobject Ġ: ĠBasic Tree UI () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun ĠgetPath Bounds ( tree : ĠJ Tree ?, Ġpath : ĠTree Path ?) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( tree Ġ!= Ġnull Ġ&& Ġtree State Ġ!= Ġnull ) Ġ{ ĠgetPath Bounds ( path , Ġtree . in sets , ĠRectangle ()) Ġ} Ġelse Ġnull ĊĊĠĠĠĠĠ Ġprivate Ġfun ĠgetPath Bounds ( path : ĠTree Path ?, Ġin sets : ĠIn sets , Ġbounds : ĠRectangle ) Ġ= ĊĠĠĠĠĠĠĠ Ġtree State . get Bounds ( path , Ġbounds )?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . width Ġ= Ġtree . width ĊĠĠĠĠĠĠĠĠĠ Ġit . y Ġ+= Ġin sets . top ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġset UI ( tmp ) ĊĠĠĠ ĠUI Manager . put (" Tree . rep aint Whole Row ", Ġtrue ) ĊĠĠĠ Ġval Ġrenderer Ġ= Ġget Cell Renderer () ĊĠĠĠ Ġset Cell Renderer Ġ{ Ġtree , Ġvalue , Ġselected , Ġexpanded , Ġleaf , Ġrow , Ġhas Focus Ġ-> ĊĠĠĠĠĠ Ġrenderer . get Tree Cell Renderer Component ( tree , Ġvalue , Ġselected , Ġexpanded , Ġleaf , Ġrow , Ġhas Focus ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . background Ġ= Ġif Ġ( selected ) ĠSELECT ED _ COLOR Ġelse Ġtree . background ĊĠĠĠĠĠĠĠ Ġ( it Ġas ? ĠJ Component )?. is Opaque Ġ= Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġis Opaque Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval ĠSELECT ED _ COLOR Ġ= ĠColor ( 0 x 6 4 _ 9 6 _ C 8 ) ĊĠ Ġ} Ċ } Ċ Ċ 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 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ