package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjava . util . Locale Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing . table . Default TableModel Ċ import Ġjavax . swing . table . TableCell Renderer Ċ Ċ private Ġfun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġval Ġsee Ġ= Ġ" See ĠAlso : ĠConstant ĠField ĠValues " ĊĠ Ġval Ġcolumn Names Ġ= ĠarrayOf (" AAA ", Ġ" BBB ") ĊĠ Ġval Ġdata Ġ= ĠarrayOf ( ĊĠĠĠ ĠarrayOf ( make OptionPane Description (" error "), Ġsee ), ĊĠĠĠ ĠarrayOf ( make OptionPane Description (" information "), Ġsee ), ĊĠĠĠ ĠarrayOf ( make OptionPane Description (" question "), Ġsee ), ĊĠĠĠ ĠarrayOf ( make OptionPane Description (" warning "), Ġsee ) ĊĠ Ġ) ĊĠ Ġval Ġmodel Ġ= Ġobject Ġ: ĠDefault TableModel ( data , Ġcolumn Names ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis Cell Editable ( row : ĠInt , Ġcolumn : ĠInt ) Ġ= Ġfalse ĊĠ Ġ} ĊĠ Ġval Ġtable Ġ= ĠJ Table ( model ) ĊĠ Ġtable . auto Create Row Sorter Ġ= Ġtrue ĊĠ Ġtable . table Header . re ordering Allowed Ġ= Ġfalse ĊĠ Ġtable . row Selection Allowed Ġ= Ġtrue ĊĠ Ġtable . fill s Viewport Height Ġ= Ġtrue ĊĠ Ġtable . show Vertical Lines Ġ= Ġfalse ĊĠ Ġtable . inter cell Spacing Ġ= ĠDimension ( 0 , Ġ 1 ) ĊĠ Ġtable . row Height Ġ= Ġ 5 6 ĊĠ Ġval Ġrenderer Ġ= ĠColumn Sp anning Cell Renderer () ĊĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtable . column Model . column Count ) Ġ{ ĊĠĠĠ Ġtable . column Model . getColumn ( i ). also Ġ{ ĊĠĠĠĠĠ Ġit . cell Renderer Ġ= Ġrenderer ĊĠĠĠĠĠ Ġit . min Width Ġ= Ġ 5 0 ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġreturn ĠJPanel ( Border Layout ()). also Ġ{ ĊĠĠĠ Ġit . add ( J ScrollPane ( table )) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġmake OptionPane Description ( type : ĠString ): ĠOption Pane Description Ġ{ ĊĠ Ġval Ġkey Ġ= Ġtype Ġ+ Ġ" Icon " ĊĠ Ġval Ġicon Ġ= ĠUI Manager . get Icon (" OptionPane .$ key ") ĊĠ Ġval Ġfmt Ġ= Ġ" public Ġstatic Ġfinal Ġint Ġ% s _ MESSAGE % n Used Ġfor Ġ% s Ġmessages ." ĊĠ Ġval Ġmsg Ġ= Ġfmt . format ( type . uppercase ( Locale . EN GL ISH ), Ġtype ) ĊĠ Ġreturn ĠOption Pane Description ( key , Ġicon , Ġmsg ) Ċ } Ċ Ċ private Ġclass ĠColumn Sp anning Cell Renderer Ġ: ĠJPanel ( Border Layout ()), ĠTable Cell Renderer Ġ{ ĊĠ Ġprivate Ġval Ġtext Area Ġ= ĠJ TextArea ( 2 , Ġ 9 9 9 _ 9 9 9 ) ĊĠ Ġprivate Ġval Ġlabel Ġ= ĠJLabel () ĊĠ Ġprivate Ġval Ġicon Label Ġ= ĠJLabel () ĊĠ Ġprivate Ġval Ġscroll Ġ= ĠJ ScrollPane ( textArea ) ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġscroll . vertical ScrollBar Policy Ġ= ĠScroll Pane Constants . VERTICAL _ SCROLL BAR _ NE VER ĊĠĠĠ Ġscroll . horizontal ScrollBar Policy Ġ= ĠScroll Pane Constants . HORIZONTAL _ SCROLL BAR _ NE VER ĊĠĠĠ Ġscroll . border Ġ= ĠBorder Factory . create Empty Border () ĊĠĠĠ Ġscroll . viewport Border Ġ= ĠBorder Factory . create Empty Border () ĊĠĠĠ Ġscroll . is Opaque Ġ= Ġfalse ĊĠĠĠ Ġscroll . viewport . is Opaque Ġ= Ġfalse ĊĠĠĠ Ġtext Area . border Ġ= ĠBorder Factory . create Empty Border () ĊĠĠĠ Ġtext Area . margin Ġ= ĠIn sets ( 0 , Ġ 0 , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġtext Area . foreground Ġ= ĠColor . RED ĊĠĠĠ Ġtext Area . is Editable Ġ= Ġfalse ĊĠĠĠ Ġtext Area . is Focus able Ġ= Ġfalse ĊĠĠĠ Ġtext Area . is Opaque Ġ= Ġfalse ĊĠĠĠ Ġicon Label . border Ġ= ĠBorder Factory . create Empty Border ( 0 , Ġ 4 , Ġ 0 , Ġ 4 ) ĊĠĠĠ Ġicon Label . is Opaque Ġ= Ġfalse ĊĠĠĠ Ġval Ġb 1 Ġ= ĠBorder Factory . create Empty Border ( 2 , Ġ 2 , Ġ 2 , Ġ 2 ) ĊĠĠĠ Ġval Ġb 2 Ġ= ĠBorder Factory . create Mat te Border ( 0 , Ġ 0 , Ġ 1 , Ġ 1 , ĠColor . GRAY ) ĊĠĠĠ Ġlabel . border Ġ= ĠBorder Factory . create Compound Border ( b 2 , Ġb 1 ) ĊĠĠĠ Ġbackground Ġ= Ġtext Area . background ĊĠĠĠ Ġis Opaque Ġ= Ġtrue ĊĠĠĠ Ġadd ( label , ĠBorderLayout . NORTH ) ĊĠĠĠ Ġadd ( scroll ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget TableCell Renderer Component ( ĊĠĠĠ Ġtable : ĠJ Table , ĊĠĠĠ Ġvalue : ĠAny ?, ĊĠĠĠ Ġis Selected : ĠBoolean , ĊĠĠĠ Ġhas Focus : ĠBoolean , ĊĠĠĠ Ġrow : ĠInt , ĊĠĠĠ Ġcolumn : ĠInt ĊĠ Ġ): ĠComponent Ġ{ ĊĠĠĠ Ġval Ġd : ĠOption Pane Description ĊĠĠĠ Ġif Ġ( value Ġis ĠOption Pane Description ) Ġ{ ĊĠĠĠĠĠ Ġd Ġ= Ġvalue ĊĠĠĠĠĠ Ġadd ( icon Label , ĠBorderLayout . WEST ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġval Ġtitle Ġ= Ġvalue ?. toString () Ġ?: Ġ"" ĊĠĠĠĠĠ Ġval Ġm ri Ġ= Ġtable . convert RowIndex To Model ( row ) ĊĠĠĠĠĠ Ġval Ġo Ġ= Ġtable . model . getValue At ( m ri , Ġ 0 ) ĊĠĠĠĠĠ Ġd Ġ= Ġif Ġ( o Ġis ĠOption Pane Description ) Ġ{ ĊĠĠĠĠĠĠĠ ĠOption Pane Description ( title , Ġo . icon , Ġo . text ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠOption Pane Description ( title , Ġnull , Ġ"") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġremove ( icon Label ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġlabel . text Ġ= Ġd . title ĊĠĠĠ Ġtext Area . text Ġ= Ġd . text ĊĠĠĠ Ġicon Label . icon Ġ= Ġd . icon ĊĠĠĠ Ġval Ġcr Ġ= Ġtable . getCell Rect ( row , Ġcolumn , Ġfalse ) ĊĠĠĠ Ġif Ġ( column Ġ!= ĠTARGET _ IDX ) Ġ{ ĊĠĠĠĠĠ Ġcr . x Ġ-= Ġicon Label . preferred Size . width ĊĠĠĠ Ġ} ĊĠĠĠ Ġscroll . viewport . view Position Ġ= Ġcr . location ĊĠĠĠ Ġbackground Ġ= Ġif Ġ( isSelected ) ĠColor . OR ANGE Ġelse ĠColor . WHITE ĊĠĠĠ Ġreturn Ġthis ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTARGET _ IDX Ġ= Ġ 0 ĊĠ Ġ} Ċ } Ċ Ċ private Ġdata Ġclass ĠOption Pane Description ( val Ġtitle : ĠString , Ġval Ġicon : ĠIcon ?, Ġval Ġtext : ĠString ) Ċ Ċ 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 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ