package Ġexample Ċ Ċ import Ġcom . sun . java . swing . pl af . windows . Windows ComboBox UI Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjava . awt . event . Input Event Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . awt . event . Mouse Listener Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing . pl af . basic . Basic ComboBox UI Ċ import Ġjavax . swing . pl af . basic . Basic Combo Popup Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġval Ġcombo 1 Ġ= Ġmake ComboBox ( 5 ) ĊĠ Ġcombo 1 . ui Ġ= Ġif Ġ( combo 1 . ui Ġis ĠWindows ComboBox UI ) Ġ{ ĊĠĠĠ Ġobject Ġ: ĠWindows ComboBox UI () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġcreate Popup () Ġ= ĠBasic Combo Popup 2 ( comboBox ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġobject Ġ: ĠBasic ComboBox UI () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġcreate Popup () Ġ= ĠBasic Combo Popup 2 ( comboBox ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġval Ġcombo 2 Ġ= Ġmake ComboBox ( 2 0 ) ĊĠ Ġcombo 2 . ui Ġ= Ġif Ġ( combo 2 . ui Ġis ĠWindows ComboBox UI ) Ġ{ ĊĠĠĠ Ġobject Ġ: ĠWindows ComboBox UI () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġcreate Popup () Ġ= ĠBasic Combo Popup 3 ( comboBox ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġobject Ġ: ĠBasic ComboBox UI () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġcreate Popup () Ġ= ĠBasic Combo Popup 3 ( comboBox ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġval Ġbox Ġ= ĠBox . create Vertical Box () ĊĠ Ġbox . add ( make Title d Panel (" default :", Ġmake ComboBox ( 5 ))) ĊĠ Ġbox . add ( Box . create Vertical Str ut ( 5 )) ĊĠ Ġbox . add ( make Title d Panel (" default :", Ġmake ComboBox ( 2 0 ))) ĊĠ Ġbox . add ( Box . create Vertical Str ut ( 5 )) ĊĠ Ġbox . add ( make Title d Panel (" disable Ġright Ġclick Ġin Ġdrop - down Ġlist :", Ġcombo 1 )) ĊĠ Ġbox . add ( Box . create Vertical Str ut ( 5 )) ĊĠ Ġbox . add ( make Title d Panel (" disable Ġright Ġclick Ġand Ġscroll Ġin Ġdrop - down Ġlist :", Ġcombo 2 )) ĊĠ Ġbox . border Ġ= ĠBorder Factory . create Empty Border ( 5 , Ġ 5 , Ġ 5 , Ġ 5 ) ĊĊĠ Ġ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 ComboBox ( size : ĠInt ): ĠJ ComboBox < String > Ġ{ ĊĠ Ġval Ġmodel Ġ= ĠDefault ComboBox Model < String >() ĊĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠ Ġmodel . addElement (" No .$ i ") ĊĠ Ġ} ĊĠ Ġreturn ĠJ ComboBox ( model ) Ċ } Ċ Ċ private Ġclass ĠBasic Combo Popup 2 ( combo : ĠJ ComboBox <* >) Ġ: ĠBasic Combo Popup ( combo ) Ġ{ ĊĠ Ġ@ Transient Ġprivate Ġvar Ġhandler 2 : ĠMouse Listener ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġuninstall ing UI () Ġ{ ĊĠĠĠ Ġsuper . un installing UI () ĊĠĠĠ Ġhandler 2 Ġ= Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate List Mouse Listener () Ġ= Ġhandler 2 Ġ?: ĠHandler 2 () ĊĊĠ Ġprivate Ġinner Ġclass ĠHandler 2 Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmouse Released ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( e . source Ġ!= Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( list . model . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ< ins > ĊĠĠĠĠĠĠĠ Ġif Ġ(! Swing Utilities . is Left MouseButton ( e ) Ġ|| Ġ! comboBox . isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ</ ins > ĊĠĠĠĠĠĠĠ Ġ// ĠJ List Ġmouse Ġlistener ĊĠĠĠĠĠĠĠ Ġif Ġ( comboBox . selectedIndex Ġ== Ġlist . selectedIndex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcombo Box . editor . item Ġ= Ġlist . selected Value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcombo Box . selectedIndex Ġ= Ġlist . selectedIndex ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcombo Box . is Popup Visible Ġ= Ġfalse ĊĠĠĠĠĠ Ġ// Ġworkaround Ġfor Ġcancell ing Ġan Ġedited Ġitem Ġ( bug Ġ 4 5 3 0 9 5 3 ) ĊĠĠĠĠĠ Ġif Ġ( comboBox . is Editable Ġ&& Ġcombo Box . editor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcombo Box . configure Editor ( comboBox . editor , Ġcombo Box . selected Item ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠBasic Combo Popup 3 ( combo : ĠJ ComboBox <* >) Ġ: ĠBasic Combo Popup ( combo ) Ġ{ ĊĠ Ġoverride Ġfun Ġcreate List (): ĠJ List < *> Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠJ List < Any >( comboBox . model ) Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġprocess MouseEvent ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Swing Utilities . is Right MouseButton ( e )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġev Ġ= Ġe ĊĠĠĠĠĠĠĠ Ġif Ġ( e . is Control Down ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠFix Ġfor Ġ 4 2 3 4 0 5 3 . ĠFilter Ġout Ġthe ĠControl ĠKey Ġfrom Ġthe Ġlist . ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġie ., Ġdon 't Ġallow ĠCTRL Ġkey Ġde selection . ĊĠĠĠĠĠĠĠĠĠ Ġev Ġ= ĠMouseEvent ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . component , Ġe . id , Ġe . get When (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġe . get Modifiers () Ġ^ ĠInput Event . CTRL _ MASK , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠJava Ġ 1 0 : Ġe . get Modifiers Ex () Ġ^ ĠToolkit . getDefault Toolkit (). get Menu Shortcut Key Mask Ex (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . modifiers Ex Ġxor ĠInput Event . CTRL _ DOWN _ MASK , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . x , Ġe . y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . x On Screen , Ġe . y On Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . click Count , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . is Popup Trigger , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMouseEvent . NO BUTTON ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . process MouseEvent ( ev ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ 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 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ