package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjava . awt . event . Item Event Ċ import Ġjava . awt . event . Item Listener Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġval Ġcombo 0 1 Ġ= ĠAltern ate Row Color ComboBox < String >( make Model ()) ĊĊĠ Ġval Ġcombo 0 2 Ġ= ĠAltern ate Row Color ComboBox < String >( make Model ()) ĊĠ Ġcombo 0 2 . is Editable Ġ= Ġtrue ĊĊĠ Ġval Ġbox Ġ= ĠBox . create Vertical Box (). also Ġ{ ĊĠĠĠ Ġit . border Ġ= ĠBorder Factory . create Empty Border ( 5 , Ġ 5 , Ġ 5 , Ġ 5 ) ĊĠĠĠ Ġit . add ( make Title d Panel (" set Editable ( false )", Ġcombo 0 1 )) ĊĠĠĠ Ġit . add ( Box . create Vertical Str ut ( 5 )) ĊĠĠĠ Ġit . add ( make Title d Panel (" set Editable ( true )", Ġcombo 0 2 )) ĊĠ Ġ} ĊĊĠ Ġreturn ĠJPanel ( Border Layout ()). also Ġ{ ĊĠĠĠ Ġit . add ( box , ĠBorderLayout . NORTH ) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġmake Title d Panel ( title : ĠString , Ġc : ĠComponent ) Ġ= ĠJPanel ( Border Layout ()). also Ġ{ ĊĠ Ġit . border Ġ= ĠBorder Factory . create Title d Border ( title ) ĊĠ Ġit . add ( c ) Ċ } Ċ Ċ private Ġfun Ġmake Model () Ġ= ĠDefault ComboBox Model < String >(). also Ġ{ ĊĠ Ġit . addElement (" aaa ") ĊĠ Ġit . addElement (" aaa 1 1 1 ") ĊĠ Ġit . addElement (" aaa 2 2 2 bb ") ĊĠ Ġit . addElement (" 1 2 3 4 1 2 3 5 1 2 3 5 1 2 3 4 ") ĊĠ Ġit . addElement (" bbb 1 ") ĊĠ Ġit . addElement (" bbb 1 2 ") Ċ } Ċ Ċ private Ġclass ĠAltern ate Row Color ComboBox < E >( model : ĠCombo Box Model < E >) Ġ: ĠJ ComboBox < E >( model ) Ġ{ ĊĠ Ġ@ Transient ĊĠ Ġprivate Ġvar Ġitem Color Listener : ĠItem Listener ? Ġ= Ġnull ĊĊĠ Ġ// Ġconstructor () Ġ: Ġsuper () ĊĊĠ Ġ// Ġconstructor ( model : ĠCombo Box Model < E >) Ġ: Ġsuper ( model ) ĊĊĠ Ġ// Ġconstructor ( items : ĠArray < E >) Ġ: Ġsuper ( items ) ĊĊĠ Ġoverride Ġfun Ġset Editable ( flag : ĠBoolean ) Ġ{ ĊĠĠĠ Ġsuper . set Editable ( flag ) ĊĠĠĠ Ġif Ġ( flag ) Ġ{ ĊĠĠĠĠĠ Ġval Ġeditor Ġ= Ġget Editor (). editor Component ĊĠĠĠĠĠ Ġ( editor Ġas ? ĠJ Component )?. is Opaque Ġ= Ġtrue ĊĠĠĠĠĠ Ġeditor . background Ġ= Ġget Alternate Row Color ( selectedIndex ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġupdate UI () Ġ{ ĊĠĠĠ Ġremove Item Listener ( item Color Listener ) ĊĠĠĠ Ġset Renderer ( null ) ĊĠĠĠ Ġsuper . update UI () ĊĠĠĠ Ġval Ġrenderer Ġ= Ġget Renderer () ĊĠĠĠ Ġset Renderer Ġ{ Ġlist , Ġvalue , Ġindex , Ġis Selected , Ġcell Has Focus Ġ-> ĊĠĠĠĠĠ Ġrenderer . getList Cell Renderer Component ( list , Ġvalue , Ġindex , Ġis Selected , Ġcell Has Focus ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġ( it Ġas ? ĠJ Component )?. is Opaque Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ(! isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . background Ġ= Ġget Alternate Row Color ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġitem Color Listener Ġ= ĠItem Listener Ġ{ Ġe Ġ-> ĊĠĠĠĠĠ Ġval Ġcb Ġ= Ġe . item Selectable ĊĠĠĠĠĠ Ġif Ġ( e . state Change Ġ== ĠItem Event . SELECTED Ġ&& Ġcb Ġis ĠJ ComboBox <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrc Ġ= Ġget Alternate Row Color ( cb . selectedIndex ) ĊĠĠĠĠĠĠĠ Ġif Ġ( cb . is Editable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcb . editor . editor Component . background Ġ= Ġrc ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcb . background Ġ= Ġrc ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġadd Item Listener ( item Color Listener ) ĊĠĠĠ ĠEvent Queue . invoke Later Ġ{ ĊĠĠĠĠĠ Ġ( get Editor (). editor Component Ġas ? ĠJ Component )?. also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . is Opaque Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġit . background Ġ= Ġget Alternate Row Color ( selectedIndex ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Alternate Row Color ( idx : ĠInt ) Ġ= Ġif Ġ( idx Ġ% Ġ 2 Ġ== Ġ 0 ) ĠColor ( 0 xE 1 _ FF _ E 1 ) Ġelse ĠColor . WHITE Ċ } Ċ Ċ 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 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ