package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjava . awt . event . ActionEvent Ċ import Ġjava . awt . event . ActionListener Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing . event . Mouse Input Adapter Ċ import Ġjavax . swing . event . Mouse Input Listener Ċ import Ġjavax . swing . event . PopupMenu Event Ċ import Ġjavax . swing . event . PopupMenu Listener Ċ import Ġjavax . swing . pl af . basic . Basic CheckBox MenuItem UI Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġ// ĠJava Ġ 9 ĊĠ Ġ// ĠUI Manager . put (" CheckBox MenuItem . do Not Close On Mouse Click ", Ġtrue ) ĊĊĠ Ġval Ġbutton Ġ= ĠJ ToggleButton (" J PopupMenu ĠTest ") ĊĠ Ġval Ġpopup Ġ= ĠJ PopupMenu () ĊĠ Ġval Ġhandler Ġ= ĠToggle Popup Handler ( popup , Ġbutton ) ĊĠ Ġpopup . add PopupMenu Listener ( handler ) ĊĠ Ġbutton . addActionListener ( handler ) ĊĊĠ Ġ// ĠJava Ġ 9 ĊĠ Ġ// ĠJ CheckBox MenuItem Ġcheck MenuItem Ġ= Ġnew ĠJ CheckBox MenuItem (" do Not Close On Mouse Click ") ĊĠ Ġ// Ġcheck MenuItem . put Client Property (" CheckBox MenuItem . do Not Close On Mouse Click ", Ġtrue ) ĊĠ Ġ// Ġpopup . add ( check MenuItem ) ĊĊĠ Ġval Ġcheck Ġ= Ġobject Ġ: ĠJ CheckBox (" J CheckBox ") Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġupdate UI () Ġ{ ĊĠĠĠĠĠ Ġsuper . update UI () ĊĠĠĠĠĠ Ġis Focus Paint ed Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Minimum Size (): ĠDimension Ġ{ ĊĠĠĠĠĠ Ġval Ġd Ġ= Ġpreferred Size ĊĠĠĠĠĠ Ġd . width Ġ= ĠShort . MAX _ VALUE . toInt () ĊĠĠĠĠĠ Ġreturn Ġd ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġpopup . add ( check ) ĊĠ Ġpopup . add ( make St ay Open CheckBox MenuItem ( J MenuItem (" J MenuItem Ġ+ ĠJ CheckBox "))) ĊĠ Ġpopup . add ( J CheckBox MenuItem (" J CheckBox MenuItem ")) ĊĠ Ġpopup . add ( J CheckBox MenuItem (" keep ing Ġopen Ġ# 1 ")). addActionListener Ġ{ Ġe Ġ-> ĊĠĠĠ Ġprintln (" ActionListener ") ĊĠĠĠ Ġval Ġc Ġ= ĠSw ing Utilities . get Ancestor Of Class ( J PopupMenu :: class . java , Ġe . source Ġas ? ĠComponent ) ĊĠĠĠ Ġ( c Ġas ? ĠJ PopupMenu )?. isVisible Ġ= Ġtrue ĊĠ Ġ} ĊĊĠ Ġval Ġmi Ġ= Ġobject Ġ: ĠJ CheckBox MenuItem (" keep ing Ġopen Ġ# 2 ") Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġupdate UI () Ġ{ ĊĠĠĠĠĠ Ġsuper . update UI () ĊĠĠĠĠĠ Ġval Ġtmp Ġ= Ġobject Ġ: ĠBasic CheckBox MenuItem UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo Click ( ms m : ĠMenu Selection Manager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġprintln (" Menu Selection Manager : Ġdo Click ") ĊĠĠĠĠĠĠĠĠĠ Ġmenu Item . do Click ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġset UI ( tmp ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġpopup . add ( mi ) ĊĊĠ Ġreturn ĠJPanel (). also Ġ{ ĊĠĠĠ Ġit . is Opaque Ġ= Ġtrue ĊĠĠĠ Ġit . component PopupMenu Ġ= Ġpopup ĊĠĠĠ Ġit . add ( button ) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġmake St ay Open CheckBox MenuItem ( mi : ĠJ MenuItem ): ĠJ MenuItem Ġ{ ĊĠ Ġval Ġtext Ġ= Ġmi . text ĊĠ Ġmi . text Ġ= Ġ" Ġ" ĊĠ Ġmi . layout Ġ= ĠBorderLayout () ĊĠ Ġval Ġcheck Ġ= Ġobject Ġ: ĠJ CheckBox ( text ) Ġ{ ĊĠĠĠ Ġ@ Transient Ġprivate Ġvar Ġhandler : ĠMouse Input Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġupdate UI () Ġ{ ĊĠĠĠĠĠ Ġremove Mouse Listener ( handler ) ĊĠĠĠĠĠ Ġremove Mouse Motion Listener ( handler ) ĊĠĠĠĠĠ Ġsuper . update UI () ĊĠĠĠĠĠ Ġhandler Ġ= ĠDispatch Parent Handler () ĊĠĠĠĠĠ Ġadd Mouse Listener ( handler ) ĊĠĠĠĠĠ Ġadd Mouse Motion Listener ( handler ) ĊĠĠĠĠĠ Ġis Focus able Ġ= Ġfalse ĊĠĠĠĠĠ Ġis Opaque Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġmi . add ( check ) ĊĠ Ġreturn Ġmi Ċ } Ċ Ċ private Ġclass ĠDispatch Parent Handler Ġ: ĠMouse Input Adapter () Ġ{ ĊĠ Ġprivate Ġfun Ġdispatch Event ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠ Ġval Ġsrc Ġ= Ġe . component ĊĠĠĠ Ġval Ġtgt Ġ= ĠSw ing Utilities . getUn wrapped Parent ( src ) ĊĠĠĠ Ġtgt . dispatchEvent ( Swing Utilities . convert MouseEvent ( src , Ġe , Ġtgt )) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġmouse Entered ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠ Ġdispatch Event ( e ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġmouse Exit ed ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠ Ġdispatch Event ( e ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġmouse Moved ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠ Ġdispatch Event ( e ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġmouse Drag ged ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠ Ġdispatch Event ( e ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠToggle Popup Handler ( ĊĠ Ġprivate Ġval Ġpopup : ĠJ PopupMenu , ĊĠ Ġprivate Ġval Ġbutton : ĠAbstract Button Ċ ) Ġ: ĠPopup Menu Listener , ĠActionListener Ġ{ ĊĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAction Event ) Ġ{ ĊĠĠĠ Ġval Ġb Ġ= Ġe . source Ġas ? ĠAbstract Button ĊĠĠĠ Ġif Ġ( b ?. isSelected Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠ Ġval Ġp Ġ= ĠSw ing Utilities . getUn wrapped Parent ( b ) ĊĠĠĠĠĠ Ġval Ġr Ġ= Ġb . bounds ĊĠĠĠĠĠ Ġpopup . show ( p , Ġr . x , Ġr . y Ġ+ Ġr . height ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġpopup . isVisible Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpopup Menu Canceled ( e : ĠPopup Menu Event ) Ġ{ ĊĠĠĠ Ġ/* Ġnot Ġneeded Ġ*/ ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpopup Menu Will Be come In visible ( e : ĠPopup Menu Event ) Ġ{ ĊĠĠĠ ĠEvent Queue . invoke Later Ġ{ ĊĠĠĠĠĠ Ġbutton . model . is Ar med Ġ= Ġfalse ĊĠĠĠĠĠ Ġbutton . model . isSelected Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpopup Menu Will Be come Visible ( e : ĠPopup Menu Event ) Ġ{ ĊĠĠĠ Ġ/* Ġnot Ġneeded Ġ*/ ĊĠ Ġ} Ċ } Ċ Ċ 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 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ