package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjava . awt . event . Mouse Wheel Event Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing . pl af . Layer UI Ċ import Ġjavax . swing . table . Default TableModel Ċ Ċ private Ġconst Ġval ĠTEXT Ġ= Ġ" aaa \ na \ na \ na \ na \ n aaa \ na \ na \ na \ n aaa \ n " Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġval Ġcolumn Names Ġ= ĠarrayOf (" String ", Ġ" Integer ", Ġ" Boolean ") ĊĠ Ġval Ġdata Ġ= ĠarrayOf ( ĊĠĠĠ ĠarrayOf (" aaa ", Ġ 1 2 , Ġtrue ), ĠarrayOf (" zz z ", Ġ 6 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" bbb ", Ġ 2 2 , Ġtrue ), ĠarrayOf (" nn n ", Ġ 9 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" ccc ", Ġ 3 2 , Ġtrue ), ĠarrayOf (" oo o ", Ġ 8 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" ddd ", Ġ 4 2 , Ġtrue ), ĠarrayOf (" pp p ", Ġ 9 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" eee ", Ġ 5 2 , Ġtrue ), ĠarrayOf (" qq q ", Ġ 8 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" fff ", Ġ 6 2 , Ġtrue ), ĠarrayOf (" rr r ", Ġ 7 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" gg g ", Ġ 5 1 , Ġtrue ), ĠarrayOf (" sss ", Ġ 6 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" hh h ", Ġ 4 1 , Ġtrue ), ĠarrayOf (" tt t ", Ġ 5 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" iii ", Ġ 5 1 , Ġtrue ), ĠarrayOf (" uu u ", Ġ 4 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" jj j ", Ġ 6 1 , Ġtrue ), ĠarrayOf (" vv v ", Ġ 3 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" kk k ", Ġ 7 2 , Ġtrue ), ĠarrayOf (" www ", Ġ 2 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" ll l ", Ġ 8 2 , Ġtrue ), ĠarrayOf (" xxx ", Ġ 1 , Ġfalse ), ĊĠĠĠ ĠarrayOf (" mm m ", Ġ 9 2 , Ġtrue ), ĠarrayOf (" yyy ", Ġ 0 , Ġfalse ) ĊĠ Ġ) ĊĠ Ġval Ġmodel Ġ= Ġobject Ġ: ĠDefault TableModel ( data , Ġcolumn Names ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Column Class ( column : ĠInt ) Ġ= ĠgetValue At ( 0 , Ġcolumn ). java Class ĊĠ Ġ} ĊĠ Ġval Ġtable Ġ= ĠJ Table ( model ) ĊĠ Ġtable . auto Create Row Sorter Ġ= Ġtrue ĊĠ Ġval Ġtext Pane Ġ= ĠJ Text Pane () ĊĠ Ġtext Pane . is Editable Ġ= Ġfalse ĊĠ Ġtext Pane . margin Ġ= ĠIn sets ( 5 , Ġ 1 0 , Ġ 5 , Ġ 5 ) ĊĠ Ġval Ġc Ġ= ĠJ TextArea ( TEXT ) ĊĠ Ġc . is Editable Ġ= Ġfalse ĊĠ Ġval Ġdoc Ġ= Ġtext Pane . document ĊĠ Ġrun Catch ing Ġ{ ĊĠĠĠ Ġdoc . insert String ( doc . length , ĠTEXT , Ġnull ) ĊĠĠĠ Ġdoc . insert String ( doc . length , ĠTEXT , Ġnull ) ĊĠĠĠ Ġdoc . insert String ( doc . length , ĠTEXT , Ġnull ) ĊĠĠĠ Ġtext Pane . insert Component ( create Child ScrollPane ( c )) ĊĠĠĠ Ġdoc . insert String ( doc . length , Ġ"\ n ", Ġnull ) ĊĠĠĠ Ġdoc . insert String ( doc . length , ĠTEXT , Ġnull ) ĊĠĠĠ Ġtext Pane . insert Component ( create Child ScrollPane ( table )) ĊĠĠĠ Ġdoc . insert String ( doc . length , Ġ"\ n ", Ġnull ) ĊĠĠĠ Ġdoc . insert String ( doc . length , ĠTEXT , Ġnull ) ĊĠĠĠ Ġtext Pane . insert Component ( J ScrollPane ( J Tree ())) ĊĠĠĠ Ġdoc . insert String ( doc . length , Ġ"\ n ", Ġnull ) ĊĠĠĠ Ġdoc . insert String ( doc . length , ĠTEXT , Ġnull ) ĊĠ Ġ} ĊĠ Ġreturn ĠJPanel ( Border Layout ()). also Ġ{ ĊĠĠĠ Ġit . add ( J Layer ( J ScrollPane ( text Pane ), ĠW heel Scroll Layer UI ())) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġcreate Child ScrollPane ( view : ĠComponent ): ĠJ ScrollPane Ġ{ ĊĠ Ġreturn Ġobject Ġ: ĠJ ScrollPane ( view ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget PreferredSize () Ġ= ĠDimension ( 2 4 0 , Ġ 1 2 0 ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Maximum Size () Ġ= Ġsuper . get Maximum Size (). also Ġ{ ĊĠĠĠĠĠ Ġit . height Ġ= Ġpreferred Size . height ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠW heel Scroll Layer UI Ġ: ĠLayer UI < J ScrollPane >() Ġ{ ĊĠ Ġoverride Ġfun Ġinstall UI ( c : ĠJ Component ) Ġ{ ĊĠĠĠ Ġsuper . install UI ( c ) ĊĠĠĠ Ġif Ġ( c Ġis ĠJ Layer <* >) Ġ{ ĊĠĠĠĠĠ Ġc . layer Event Mask Ġ= ĠA WT Event . MOUSE _ W HE EL _ EVENT _ MASK ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġuninstall UI ( c : ĠJ Component ) Ġ{ ĊĠĠĠ Ġif Ġ( c Ġis ĠJ Layer <* >) Ġ{ ĊĠĠĠĠĠ Ġc . layer Event Mask Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġsuper . uninstall UI ( c ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġprocess Mouse Wheel Event ( e : ĠMouse Wheel Event , Ġl : ĠJ Layer < out ĠJ ScrollPane >) Ġ{ ĊĠĠĠ Ġval Ġc Ġ= Ġe . component ĊĠĠĠ Ġval Ġdir Ġ= Ġe . wheel Rotation ĊĠĠĠ Ġval Ġmain Ġ= Ġl . view ĊĠĠĠ Ġif Ġ( c Ġis ĠJ ScrollPane Ġ&& Ġc Ġ!= Ġmain ) Ġ{ ĊĠĠĠĠĠ Ġval Ġm Ġ= Ġc . vertical ScrollBar . model ĊĠĠĠĠĠ Ġval Ġextent Ġ= Ġm . extent ĊĠĠĠĠĠ Ġval Ġminimum Ġ= Ġm . minimum ĊĠĠĠĠĠ Ġval Ġmaximum Ġ= Ġm . maximum ĊĠĠĠĠĠ Ġval Ġvalue Ġ= Ġm . value ĊĠĠĠĠĠ Ġif Ġ( value Ġ+ Ġextent Ġ>= Ġmaximum Ġ&& Ġdir Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmain . dispatchEvent ( Swing Utilities . convert MouseEvent ( c , Ġe , Ġmain )) ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġ<= Ġminimum Ġ&& Ġdir Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmain . dispatchEvent ( Swing Utilities . convert MouseEvent ( c , Ġe , Ġmain )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ 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 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ