package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . awt . event . Window Event Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing . event . Mouse Input Adapter Ċ import Ġjavax . swing . pl af . Layer UI Ċ import Ġjavax . swing . pl af . basic . Basic ComboBox UI Ċ Ċ private Ġconst Ġval ĠG AP Ġ= Ġ 4 Ċ private Ġval Ġleft Ġ= ĠSide Label ( Side . W ) Ċ private Ġval Ġright Ġ= ĠSide Label ( Side . E ) Ċ private Ġval Ġtop Ġ= ĠSide Label ( Side . N ) Ċ private Ġval Ġbottom Ġ= ĠSide Label ( Side . S ) Ċ private Ġval Ġtop Left Ġ= ĠSide Label ( Side . NW ) Ċ private Ġval Ġtop Right Ġ= ĠSide Label ( Side . NE ) Ċ private Ġval Ġbottom Left Ġ= ĠSide Label ( Side . SW ) Ċ private Ġval Ġbottom Right Ġ= ĠSide Label ( Side . SE ) Ċ private Ġval Ġcontent Panel Ġ= ĠJPanel ( Border Layout ()) Ċ private Ġval Ġresize Panel Ġ= Ġobject Ġ: ĠJPanel ( Border Layout ()) Ġ{ ĊĠ Ġprivate Ġval ĠborderColor Ġ= ĠColor ( 0 x 6 4 _ 6 4 _ 6 4 ) ĊĠ Ġoverride Ġfun Ġpaint Component ( g : ĠGraphics ) Ġ{ ĊĠĠĠ Ġval Ġg 2 Ġ= Ġg . create () Ġas ? ĠGraphics 2 D Ġ?: Ġreturn ĊĠĠĠ Ġval Ġw Ġ= Ġwidth ĊĠĠĠ Ġval Ġh Ġ= Ġheight ĊĠĠĠ Ġg 2 . paint Ġ= ĠColor . OR ANGE ĊĠĠĠ Ġg 2 . fillRect ( 0 , Ġ 0 , Ġw , Ġh ) ĊĠĠĠ Ġg 2 . paint Ġ= ĠborderColor ĊĠĠĠ Ġg 2 . draw Rect ( 0 , Ġ 0 , Ġw Ġ- Ġ 1 , Ġh Ġ- Ġ 1 ) ĊĠĠĠ Ġg 2 . draw Line ( 0 , Ġ 2 , Ġ 2 , Ġ 0 ) ĊĠĠĠ Ġg 2 . draw Line ( w Ġ- Ġ 3 , Ġ 0 , Ġw Ġ- Ġ 1 , Ġ 2 ) ĊĠĠĠ Ġg 2 . clear Rect ( 0 , Ġ 0 , Ġ 2 , Ġ 1 ) ĊĠĠĠ Ġg 2 . clear Rect ( 0 , Ġ 0 , Ġ 1 , Ġ 2 ) ĊĠĠĠ Ġg 2 . clear Rect ( w Ġ- Ġ 2 , Ġ 0 , Ġ 2 , Ġ 1 ) ĊĠĠĠ Ġg 2 . clear Rect ( w Ġ- Ġ 1 , Ġ 0 , Ġ 1 , Ġ 2 ) ĊĠĠĠ Ġg 2 . dispose () ĊĠ Ġ} Ċ } Ċ val Ġmain Content Pane Ġget () Ġ= Ġcontent Panel Ċ Ċ fun Ġmake UI () Ġ= ĠJPanel ( Border Layout ()). also Ġ{ ĊĠ Ġit . add ( J ScrollPane ( J Tree ())) ĊĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) Ċ } Ċ Ċ fun Ġmake Frame ( str : ĠString ): ĠJ Frame Ġ{ ĊĠ Ġval Ġframe Ġ= Ġobject Ġ: ĠJ Frame ( str ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetContent Pane () Ġ= Ġmain Content Pane ĊĠ Ġ} ĊĠ Ġframe . is Un decor ated Ġ= Ġtrue ĊĠ Ġframe . background Ġ= ĠColor ( 0 x 0 , Ġtrue ) ĊĊĠ Ġval Ġtitle Ġ= ĠJPanel ( Border Layout ( GAP , ĠG AP )) ĊĠ Ġtitle . is Opaque Ġ= Ġfalse ĊĠ Ġtitle . background Ġ= ĠColor . OR ANGE ĊĠ Ġtitle . border Ġ= ĠBorder Factory . create Empty Border ( GAP , ĠG AP , ĠG AP , ĠG AP ) ĊĊĠ Ġval Ġcheck Ġ= ĠJ CheckBox (" J CheckBox ") ĊĠ Ġcheck . is Opaque Ġ= Ġfalse ĊĠ Ġcheck . is Focus able Ġ= Ġfalse ĊĊĠ Ġval Ġtitle Box Ġ= ĠBox . create Horizontal Box () ĊĠ Ġtitle Box . add ( make ComboBox ( str )) ĊĠ Ġtitle Box . add ( Box . create Horizontal Gl ue ()) ĊĠ Ġtitle Box . add ( check ) ĊĊĠ Ġval Ġbutton Ġ= Ġmake Title Button ( Application Icon ()) ĊĠ Ġbutton . addActionListener Ġ{ ĠToolkit . getDefault Toolkit (). be ep () Ġ} ĊĠ Ġtitle . add ( button , ĠBorderLayout . WEST ) ĊĠ Ġtitle . add ( title Box ) ĊĊĠ Ġval Ġclose Ġ= Ġmake Title Button ( Close Icon ()) ĊĠ Ġclose . addActionListener Ġ{ Ġe Ġ-> ĊĠĠĠ Ġval Ġw Ġ= Ġ( e . source Ġas ? ĠJ Component )?. top Level Ancestor ĊĠĠĠ Ġif Ġ( w Ġis ĠWindow ) Ġ{ ĊĠĠĠĠĠ Ġw . dispatchEvent ( Window Event ( w , ĠWindow Event . WINDOW _ CLO SING )) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġtitle . add ( close , ĠBorderLayout . EAST ) ĊĊĠ Ġval Ġr wl Ġ= ĠResize WindowListener () ĊĠ ĠlistOf ( left , Ġright , Ġtop , Ġbottom , Ġtop Left , Ġtop Right , Ġbottom Left , Ġbottom Right ). forEach Ġ{ ĊĠĠĠ Ġit . add Mouse Listener ( rw l ) ĊĠĠĠ Ġit . add Mouse Motion Listener ( rw l ) ĊĠ Ġ} ĊĊĠ Ġval Ġtitle Panel Ġ= ĠJPanel ( Border Layout ()) ĊĠ Ġtitle Panel . add ( top , ĠBorderLayout . NORTH ) ĊĠ Ġtitle Panel . add ( J Layer ( title , ĠTitle Bar Drag Layer UI ()), ĠBorderLayout . CENTER ) ĊĊĠ Ġval Ġnorth Panel Ġ= ĠJPanel ( Border Layout ()) ĊĠ Ġnorth Panel . add ( top Left , ĠBorderLayout . WEST ) ĊĠ Ġnorth Panel . add ( title Panel , ĠBorderLayout . CENTER ) ĊĠ Ġnorth Panel . add ( top Right , ĠBorderLayout . EAST ) ĊĊĠ Ġval Ġsouth Panel Ġ= ĠJPanel ( Border Layout ()) ĊĠ Ġsouth Panel . add ( bottom Left , ĠBorderLayout . WEST ) ĊĠ Ġsouth Panel . add ( bottom , ĠBorderLayout . CENTER ) ĊĠ Ġsouth Panel . add ( bottom Right , ĠBorderLayout . EAST ) ĊĠ Ġresize Panel . add ( left , ĠBorderLayout . WEST ) ĊĠ Ġresize Panel . add ( right , ĠBorderLayout . EAST ) ĊĠ Ġresize Panel . add ( north Panel , ĠBorderLayout . NORTH ) ĊĠ Ġresize Panel . add ( south Panel , ĠBorderLayout . SO UTH ) ĊĠ Ġresize Panel . add ( content Panel , ĠBorderLayout . CENTER ) ĊĠ Ġtitle Panel . is Opaque Ġ= Ġfalse ĊĠ Ġnorth Panel . is Opaque Ġ= Ġfalse ĊĠ Ġsouth Panel . is Opaque Ġ= Ġfalse ĊĠ Ġcontent Panel . is Opaque Ġ= Ġfalse ĊĠ Ġresize Panel . is Opaque Ġ= Ġfalse ĊĠ Ġframe . content Pane Ġ= Ġresize Panel ĊĠ Ġreturn Ġframe Ċ } Ċ Ċ private Ġfun Ġmake Title Button ( icon : ĠIcon ): ĠJButton Ġ{ ĊĠ Ġval Ġbutton Ġ= ĠJButton ( icon ) ĊĠ Ġbutton . is Content Area Filled Ġ= Ġfalse ĊĠ Ġbutton . is Focus Paint ed Ġ= Ġfalse ĊĠ Ġbutton . border Ġ= ĠBorder Factory . create Empty Border () ĊĠ Ġbutton . is Opaque Ġ= Ġtrue ĊĠ Ġbutton . background Ġ= ĠColor . OR ANGE ĊĠ Ġreturn Ġbutton Ċ } Ċ Ċ private Ġfun Ġmake ComboBox ( title : ĠString ): ĠJ ComboBox < String > Ġ{ ĊĠ Ġval Ġitems Ġ= ĠarrayOf ( title , Ġ"$ title Ġ( 1 )", Ġ"$ title Ġ( 2 )", Ġ"$ title Ġ( 3 )") ĊĠ Ġval Ġcombo Ġ= Ġobject Ġ: ĠJ ComboBox < String >( items ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġupdate UI () Ġ{ ĊĠĠĠĠĠ Ġsuper . update UI () ĊĠĠĠĠĠ Ġval Ġcui Ġ= Ġobject Ġ: ĠBasic ComboBox UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Arrow Button () Ġ= ĠJButton (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġit . border Ġ= ĠBorder Factory . create Empty Border () ĊĠĠĠĠĠĠĠĠĠ Ġit . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġset UI ( c ui ) ĊĠĠĠĠĠ Ġis Opaque Ġ= Ġtrue ĊĠĠĠĠĠ Ġforeground Ġ= ĠColor . BLACK ĊĠĠĠĠĠ Ġbackground Ġ= ĠColor . OR ANGE ĊĠĠĠĠĠ Ġborder Ġ= ĠBorder Factory . create Empty Border () ĊĠĠĠĠĠ Ġis Focus able Ġ= Ġfalse ĊĠĠĠĠĠ Ġfont Ġ= Ġfont . derive Font ( 1 8 f ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġval Ġml Ġ= Ġobject Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġget Button Model ( e : ĠMouseEvent ) Ġ= ĊĠĠĠĠĠ Ġ(( e . component Ġas ? ĠJ ComboBox <* >) ?. getComponent ( 0 ) Ġas ? ĠJButton )?. model ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Entered ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠ Ġget Button Model ( e )?. is R ollo ver Ġ= Ġtrue ĊĠĠĠĠĠ Ġe . component . background Ġ= ĠColor . OR ANGE . dark er () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Exit ed ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠ Ġget Button Model ( e )?. is R ollo ver Ġ= Ġfalse ĊĠĠĠĠĠ Ġe . component . background Ġ= ĠColor . OR ANGE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠ Ġget Button Model ( e )?. is Pressed Ġ= Ġtrue ĊĠĠĠĠĠ Ġcombo . is Popup Visible Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Released ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠ Ġget Button Model ( e )?. is Pressed Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠ Ġcombo . is Popup Visible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġcombo . add Mouse Listener ( ml ) ĊĠ Ġreturn Ġcombo Ċ } Ċ Ċ private Ġenum Ġclass ĠSide ( private Ġval Ġcursor : ĠInt , Ġprivate Ġval Ġwidth : ĠInt , Ġprivate Ġval Ġheight : ĠInt ) Ġ{ ĊĠ ĠN ( Cursor . N _ RE SIZE _ CURSOR , Ġ 0 , Ġ 4 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Bounds ( rect : ĠRectangle , Ġdelta : ĠPoint ): ĠRectangle Ġ{ ĊĠĠĠĠĠ Ġrect . y Ġ+= Ġdelta . y ĊĠĠĠĠĠ Ġrect . height Ġ-= Ġdelta . y ĊĠĠĠĠĠ Ġreturn Ġrect ĊĠĠĠ Ġ} ĊĠ Ġ}, ĊĠ ĠW ( Cursor . W _ RE SIZE _ CURSOR , Ġ 4 , Ġ 0 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Bounds ( rect : ĠRectangle , Ġdelta : ĠPoint ): ĠRectangle Ġ{ ĊĠĠĠĠĠ Ġrect . x Ġ+= Ġdelta . x ĊĠĠĠĠĠ Ġrect . width Ġ-= Ġdelta . x ĊĠĠĠĠĠ Ġreturn Ġrect ĊĠĠĠ Ġ} ĊĠ Ġ}, ĊĠ ĠE ( Cursor . E _ RE SIZE _ CURSOR , Ġ 4 , Ġ 0 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Bounds ( rect : ĠRectangle , Ġdelta : ĠPoint ): ĠRectangle Ġ{ ĊĠĠĠĠĠ Ġrect . width Ġ+= Ġdelta . x ĊĠĠĠĠĠ Ġreturn Ġrect ĊĠĠĠ Ġ} ĊĠ Ġ}, ĊĠ ĠS ( Cursor . S _ RE SIZE _ CURSOR , Ġ 0 , Ġ 4 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Bounds ( rect : ĠRectangle , Ġdelta : ĠPoint ): ĠRectangle Ġ{ ĊĠĠĠĠĠ Ġrect . height Ġ+= Ġdelta . y ĊĠĠĠĠĠ Ġreturn Ġrect ĊĠĠĠ Ġ} ĊĠ Ġ}, ĊĠ ĠN W ( Cursor . NW _ RE SIZE _ CURSOR , Ġ 4 , Ġ 4 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Bounds ( rect : ĠRectangle , Ġdelta : ĠPoint ): ĠRectangle Ġ{ ĊĠĠĠĠĠ Ġrect . y Ġ+= Ġdelta . y ĊĠĠĠĠĠ Ġrect . height Ġ-= Ġdelta . y ĊĠĠĠĠĠ Ġrect . x Ġ+= Ġdelta . x ĊĠĠĠĠĠ Ġrect . width Ġ-= Ġdelta . x ĊĠĠĠĠĠ Ġreturn Ġrect ĊĠĠĠ Ġ} ĊĠ Ġ}, ĊĠ ĠNE ( Cursor . NE _ RE SIZE _ CURSOR , Ġ 4 , Ġ 4 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Bounds ( rect : ĠRectangle , Ġdelta : ĠPoint ): ĠRectangle Ġ{ ĊĠĠĠĠĠ Ġrect . y Ġ+= Ġdelta . y ĊĠĠĠĠĠ Ġrect . height Ġ-= Ġdelta . y ĊĠĠĠĠĠ Ġrect . width Ġ+= Ġdelta . x ĊĠĠĠĠĠ Ġreturn Ġrect ĊĠĠĠ Ġ} ĊĠ Ġ}, ĊĠ ĠSW ( Cursor . SW _ RE SIZE _ CURSOR , Ġ 4 , Ġ 4 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Bounds ( rect : ĠRectangle , Ġdelta : ĠPoint ): ĠRectangle Ġ{ ĊĠĠĠĠĠ Ġrect . height Ġ+= Ġdelta . y ĊĠĠĠĠĠ Ġrect . x Ġ+= Ġdelta . x ĊĠĠĠĠĠ Ġrect . width Ġ-= Ġdelta . x ĊĠĠĠĠĠ Ġreturn Ġrect ĊĠĠĠ Ġ} ĊĠ Ġ}, ĊĠ ĠSE ( Cursor . SE _ RE SIZE _ CURSOR , Ġ 4 , Ġ 4 ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Bounds ( rect : ĠRectangle , Ġdelta : ĠPoint ): ĠRectangle Ġ{ ĊĠĠĠĠĠ Ġrect . height Ġ+= Ġdelta . y ĊĠĠĠĠĠ Ġrect . width Ġ+= Ġdelta . x ĊĠĠĠĠĠ Ġreturn Ġrect ĊĠĠĠ Ġ} ĊĠ Ġ}; ĊĊĠ Ġval Ġsize Ġget () Ġ= ĠDimension ( width , Ġheight ) ĊĊĠ Ġfun Ġget Cursor (): ĠCursor Ġ= ĠCursor . get Pre defined Cursor ( cursor ) ĊĊĠ Ġabstract Ġfun Ġget Bounds ( rect : ĠRectangle , Ġdelta : ĠPoint ): ĠRectangle Ċ } Ċ Ċ private Ġclass ĠSide Label ( val Ġside : ĠSide ) Ġ: ĠJLabel () Ġ{ ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġcursor Ġ= Ġside . get Cursor () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget PreferredSize () Ġ= Ġside . size ĊĊĠ Ġoverride Ġfun Ġget Minimum Size () Ġ= Ġpreferred Size ĊĊĠ Ġoverride Ġfun Ġget Maximum Size () Ġ= Ġpreferred Size Ċ } Ċ Ċ private Ġclass ĠResize WindowListener Ġ: ĠMouse Input Adapter () Ġ{ ĊĠ Ġprivate Ġval Ġrect Ġ= ĠRectangle () ĊĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠ Ġval Ġp Ġ= ĠSw ing Utilities . getRoot ( e . component ) ĊĠĠĠ Ġif Ġ( p Ġis ĠWindow ) Ġ{ ĊĠĠĠĠĠ Ġrect . bounds Ġ= Ġp . get Bounds () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġmouse Drag ged ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠ Ġval Ġc Ġ= Ġe . component ĊĠĠĠ Ġval Ġp Ġ= ĠSw ing Utilities . getRoot ( c ) ĊĠĠĠ Ġif Ġ(! rect . isEmpty Ġ&& Ġc Ġis ĠSide Label Ġ&& Ġp Ġis ĠWindow ) Ġ{ ĊĠĠĠĠĠ Ġval Ġside Ġ= Ġc . side ĊĠĠĠĠĠ Ġp . setBounds ( side . get Bounds ( rect , Ġe . point )) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠTitle Bar Drag Layer UI Ġ: ĠLayer UI < J Component >() Ġ{ ĊĠ Ġprivate Ġval Ġstart Pt Ġ= ĠPoint () ĊĊĠ Ġoverride Ġfun Ġinstall UI ( c : ĠJ Component ) Ġ{ ĊĠĠĠ Ġsuper . install UI ( c ) ĊĠĠĠ Ġ( c Ġas ? ĠJ Layer <* >) ?. layer Event Mask Ġ= ĠA WT Event . MOUSE _ EVENT _ MASK Ġor ĠA WT Event . MOUSE _ MOT ION _ EVENT _ MASK ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġuninstall UI ( c : ĠJ Component ) Ġ{ ĊĠĠĠ Ġ( c Ġas ? ĠJ Layer <* >) ?. layer Event Mask Ġ= Ġ 0 ĊĠĠĠ Ġsuper . uninstall UI ( c ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġprocess MouseEvent ( e : ĠMouseEvent , Ġl : ĠJ Layer < out ĠJ Component >) Ġ{ ĊĠĠĠ Ġif Ġ( e . id Ġ== ĠMouseEvent . MOUSE _ PRES SED Ġ&& ĠSw ing Utilities . is Left MouseButton ( e )) Ġ{ ĊĠĠĠĠĠ Ġstart Pt . location Ġ= Ġe . point ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġprocess Mouse Motion Event ( e : ĠMouseEvent , Ġl : ĠJ Layer < out ĠJ Component >) Ġ{ ĊĠĠĠ Ġval Ġc Ġ= ĠSw ing Utilities . getRoot ( e . component ) ĊĠĠĠ Ġif Ġ( e . id Ġ== ĠMouseEvent . MOUSE _ DR AG GED Ġ&& Ġc Ġis ĠWindow Ġ&& ĠSw ing Utilities . is Left MouseButton ( e )) Ġ{ ĊĠĠĠĠĠ Ġval Ġpt Ġ= Ġc . getLocation () ĊĠĠĠĠĠ Ġc . setLocation ( pt . x Ġ- Ġstart Pt . x Ġ+ Ġe . x , Ġpt . y Ġ- Ġstart Pt . y Ġ+ Ġe . y ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠApplication Icon Ġ: ĠIcon Ġ{ ĊĠ Ġoverride Ġfun Ġpaint Icon ( c : ĠComponent , Ġg : ĠGraphics , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġg 2 Ġ= Ġg . create () Ġas ? ĠGraphics 2 D Ġ?: Ġreturn ĊĠĠĠ Ġg 2 . set Rendering Hint ( Rendering Hints . KEY _ ANTI ALIAS ING , ĠRendering Hints . VALUE _ ANTI ALIAS _ ON ) ĊĠĠĠ Ġg 2 . translate ( x , Ġy ) ĊĠĠĠ Ġg 2 . paint Ġ= ĠColor . BLUE ĊĠĠĠ Ġg 2 . fill O val ( 4 , Ġ 4 , Ġ 1 1 , Ġ 1 1 ) ĊĠĠĠ Ġg 2 . dispose () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Icon Width () Ġ= Ġ 1 6 ĊĊĠ Ġoverride Ġfun Ġget Icon Height () Ġ= Ġ 1 6 Ċ } Ċ Ċ private Ġclass ĠClose Icon Ġ: ĠIcon Ġ{ ĊĠ Ġoverride Ġfun Ġpaint Icon ( c : ĠComponent , Ġg : ĠGraphics , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġg 2 Ġ= Ġg . create () Ġas ? ĠGraphics 2 D Ġ?: Ġreturn ĊĠĠĠ Ġg 2 . translate ( x , Ġy ) ĊĠĠĠ Ġg 2 . paint Ġ= ĠColor . BLACK ĊĠĠĠ Ġg 2 . draw Line ( 4 , Ġ 4 , Ġ 1 1 , Ġ 1 1 ) ĊĠĠĠ Ġg 2 . draw Line ( 4 , Ġ 5 , Ġ 1 0 , Ġ 1 1 ) ĊĠĠĠ Ġg 2 . draw Line ( 5 , Ġ 4 , Ġ 1 1 , Ġ 1 0 ) ĊĠĠĠ Ġg 2 . draw Line ( 1 1 , Ġ 4 , Ġ 4 , Ġ 1 1 ) ĊĠĠĠ Ġg 2 . draw Line ( 1 1 , Ġ 5 , Ġ 5 , Ġ 1 1 ) ĊĠĠĠ Ġg 2 . draw Line ( 1 0 , Ġ 4 , Ġ 4 , Ġ 1 0 ) ĊĠĠĠ Ġg 2 . dispose () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Icon Width () Ġ= Ġ 1 6 ĊĊĠ Ġoverride Ġfun Ġget Icon Height () Ġ= Ġ 1 6 Ċ } Ċ Ċ 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 () ĊĠĠĠ Ġ} ĊĠĠĠ Ġmake Frame (" title "). apply Ġ{ ĊĠĠĠĠĠ Ġdefault Close Operation Ġ= ĠWindow Constants . EXIT _ ON _ CLOSE ĊĠĠĠĠĠ Ġcontent Pane . add ( make UI ()) ĊĠĠĠĠĠ Ġminimum Size Ġ= ĠDimension ( 1 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠ Ġpack () ĊĠĠĠĠĠ Ġset Location Relative To ( null ) ĊĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ