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 . event . PopupMenu Event Ċ import Ġjavax . swing . event . PopupMenu Listener Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġval Ġcombo 0 0 Ġ= Ġmake ComboBox () ĊĠ Ġcombo 0 0 . is Editable Ġ= Ġfalse ĊĠ Ġval Ġcombo 0 1 Ġ= Ġmake ComboBox () ĊĠ Ġcombo 0 1 . is Editable Ġ= Ġtrue ĊĊĠ Ġval Ġcombo 0 2 Ġ= Ġmake ComboBox () ĊĠ Ġcombo 0 2 . is Editable Ġ= Ġfalse ĊĠ Ġcombo 0 2 . add PopupMenu Listener ( Wide PopupMenu Listener ()) ĊĊĠ Ġval Ġcombo 0 3 Ġ= Ġmake ComboBox () ĊĠ Ġcombo 0 3 . is Editable Ġ= Ġtrue ĊĠ Ġcombo 0 3 . add PopupMenu Listener ( Wide PopupMenu Listener ()) ĊĊĠ Ġval Ġg Ġ= Ġ 5 ĊĠ Ġval Ġp Ġ= ĠJPanel ( GridLayout ( 4 , Ġ 2 , Ġg , Ġg )) ĊĠ Ġp . add ( combo 0 0 ) ĊĠ Ġp . add ( JLabel ("< - Ġnormal ")) ĊĠ Ġp . add ( combo 0 1 ) ĊĠ Ġp . add ( JLabel ("< - Ġnormal , Ġeditable ")) ĊĠ Ġp . add ( combo 0 2 ) ĊĠ Ġp . add ( JLabel ("< - Ġwide ")) ĊĠ Ġp . add ( combo 0 3 ) ĊĠ Ġp . add ( JLabel ("< - Ġwide , Ġeditable ")) ĊĊĠ Ġreturn ĠJPanel ( Border Layout ()). also Ġ{ ĊĠĠĠ Ġit . border Ġ= ĠBorder Factory . create Empty Border ( g , Ġg , Ġg , Ġg ) ĊĠĠĠ Ġit . add ( p , ĠBorderLayout . NORTH ) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġmake ComboBox (): ĠJ ComboBox < String > Ġ{ ĊĠ Ġval Ġmodel Ġ= ĠDefault ComboBox Model < String >() ĊĠ Ġmodel . addElement (" 1 1 1 1 ") ĊĠ Ġmodel . addElement (" 2 2 2 2 2 2 2 2 ") ĊĠ Ġmodel . addElement (" 3 3 3 3 3 3 3 3 3 3 ") ĊĠ Ġmodel . addElement (" 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ") ĊĠ Ġmodel . addElement (" 4 4 4 ") ĊĠ Ġmodel . addElement (" 5 5 5 5 5 ") ĊĠ Ġreturn ĠJ ComboBox ( model ) Ċ } Ċ Ċ private Ġclass ĠWide PopupMenu Listener Ġ: ĠPopup Menu Listener Ġ{ ĊĠ Ġprivate Ġvar Ġadjust ing Ġ= Ġfalse ĊĠ Ġoverride Ġfun Ġpopup Menu Will Be come Visible ( e : ĠPopup Menu Event ) Ġ{ ĊĠĠĠ Ġval Ġcombo Ġ= Ġe . source Ġas ? ĠJ ComboBox < *> Ġ?: Ġreturn ĊĠĠĠ Ġval Ġsize Ġ= Ġcombo . size ĊĠĠĠ Ġif Ġ( size . width Ġ>= ĠPOP UP _ MIN _ WIDTH ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ(! adjust ing ) Ġ{ ĊĠĠĠĠĠ Ġadjust ing Ġ= Ġtrue ĊĠĠĠĠĠ Ġcombo . setSize ( POP UP _ MIN _ WIDTH , Ġsize . height ) ĊĠĠĠĠĠ Ġcombo . show Popup () ĊĠĠĠ Ġ} ĊĠĠĠ Ġcombo . size Ġ= Ġsize ĊĠĠĠ Ġadjust ing Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpopup Menu Will Be come In visible ( e : ĠPopup Menu Event ) Ġ{ ĊĠĠĠ Ġ/* Ġnot Ġneeded Ġ*/ ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpopup Menu Canceled ( e : ĠPopup Menu Event ) Ġ{ ĊĠĠĠ Ġ/* Ġnot Ġneeded Ġ*/ ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠPOP UP _ MIN _ WIDTH Ġ= Ġ 3 0 0 ĊĠ Ġ} Ċ } Ċ Ċ 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 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ