package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ Ċ private Ġval Ġcard Layout Ġ= ĠCard Layout () Ċ private Ġval Ġpanel Ġ= ĠJPanel ( card Layout ) Ċ private Ġval Ġdesktop Pane Ġ= ĠJ Desktop Pane () Ċ private Ġval Ġtab bed Pane Ġ= ĠJ Tabbed Pane () Ċ private Ġvar Ġopen Frame Count Ġ= Ġ 0 Ċ private Ġvar Ġrow Ġ= Ġ 0 Ċ private Ġvar Ġcol Ġ= Ġ 0 Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġpanel . add ( desktop Pane , Ġdesktop Pane . java Class . name ) ĊĠ Ġpanel . add ( tab bed Pane , Ġtab bed Pane . java Class . name ) ĊĠ Ġval Ġswap Button Ġ= ĠJ ToggleButton (" J Desktop Pane Ġ< -> ĠJ Tabbed Pane ") ĊĠ Ġswap Button . addActionListener Ġ{ Ġe Ġ-> ĊĠĠĠ Ġif Ġ(( e . source Ġas ? ĠAbstract Button )?. isSelected Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠ Ġdesktop Pane . all Frames . sorted By Ġ{ Ġit . title Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġtab bed Pane . add Tab ( it . title , Ġit . frame Icon , Ġit . content Pane ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġdesktop Pane . selected Frame ?. also Ġ{ ĊĠĠĠĠĠĠĠ Ġtab bed Pane . selectedIndex Ġ= Ġtab bed Pane . indexOf Tab ( it . title ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcard Layout . show ( panel , Ġtab bed Pane . java Class . name ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġdesktop Pane . all Frames . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġit . content Pane Ġ= Ġtab bed Pane . getComponent At ( tab bed Pane . indexOf Tab ( it . title )) Ġas ? ĠContainer ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcard Layout . show ( panel , Ġdesktop Pane . java Class . name ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġval Ġadd Button Ġ= ĠJButton (" add ") ĊĠ Ġadd Button . addActionListener Ġ{ ĊĠĠĠ Ġval Ġf Ġ= Ġcreate InternalFrame () ĊĠĠĠ Ġdesktop Pane . add ( f ) ĊĠĠĠ Ġval Ġicon Ġ= Ġf . frame Icon ĊĠĠĠ Ġval Ġtitle Ġ= Ġf . title ĊĠĠĠ Ġval Ġc Ġ= ĠJ ScrollPane ( J TextArea ( title )) ĊĠĠĠ Ġif Ġ( desktop Pane . is Showing ) Ġ{ ĊĠĠĠĠĠ Ġf . add ( c ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġtab bed Pane . add Tab ( title , Ġicon , Ġc ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġval Ġtool Bar Ġ= ĠJ ToolBar () ĊĠ Ġtool Bar . is Float able Ġ= Ġfalse ĊĠ Ġtool Bar . add ( add Button ) ĊĠ Ġtool Bar . add ( Box . create Gl ue ()) ĊĠ Ġtool Bar . add ( swap Button ) ĊĠ Ġreturn ĠJPanel ( Border Layout ()). also Ġ{ ĊĠĠĠ Ġit . add ( panel ) ĊĠĠĠ Ġit . add ( tool Bar , ĠBorderLayout . NORTH ) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġcreate InternalFrame (): ĠJ InternalFrame Ġ{ ĊĠ Ġval Ġtitle Ġ= Ġ" Document Ġ# ${ ++ open Frame Count }" ĊĠ Ġval Ġf Ġ= ĠJ InternalFrame ( title , Ġtrue , Ġtrue , Ġtrue , Ġtrue ) ĊĠ Ġrow Ġ+= Ġ 1 ĊĠ Ġf . setSize ( 2 4 0 , Ġ 1 2 0 ) ĊĠ Ġf . setLocation ( 2 0 Ġ* Ġrow Ġ+ Ġ 2 0 Ġ* Ġcol , Ġ 2 0 Ġ* Ġrow ) ĊĠ ĠEvent Queue . invoke Later Ġ{ ĊĠĠĠ Ġf . isVisible Ġ= Ġtrue ĊĠĠĠ Ġval Ġrect Ġ= Ġdesktop Pane . bounds ĊĠĠĠ Ġrect . setLocation ( 0 , Ġ 0 ) ĊĠĠĠ Ġif Ġ(! rect . contains ( f . bounds )) Ġ{ ĊĠĠĠĠĠ Ġrow Ġ= Ġ 0 ĊĠĠĠĠĠ Ġcol Ġ+= Ġ 1 ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġreturn Ġf Ċ } Ċ Ċ 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 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ