package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing . event . Document Event Ċ import Ġjavax . swing . event . Document Listener Ċ import Ġjavax . swing . text . Default Styled Document Ċ import Ġjavax . swing . text . Document Ċ import Ġjavax . swing . text . Style Constants Ċ import Ġjavax . swing . text . Style Context Ċ import Ġjavax . swing . text . Styled Editor Kit Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġval Ġface Mark Ġ= Ġ": )" ĊĠ Ġval Ġtext Pane Ġ= ĠJ Text Pane () ĊĠ Ġtext Pane . editor Kit Ġ= ĠStyled Editor Kit () ĊĊĠ Ġval Ġdl Ġ= Ġobject Ġ: ĠDocument Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġchanged Update ( e : ĠDocument Event ) Ġ{ ĊĠĠĠĠĠ Ġ/* Ġnot Ġneeded Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert Update ( e : ĠDocument Event ) Ġ{ ĊĠĠĠĠĠ Ġupdate ( e . document , Ġe . offset ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Update ( e : ĠDocument Event ) Ġ{ ĊĠĠĠĠĠ Ġupdate ( e . document , Ġe . offset ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate ( d : ĠDocument , Ġoffset : ĠInt ) Ġ{ ĊĠĠĠĠĠ Ġval Ġdoc Ġ= Ġd Ġas ? ĠDefault Styled Document Ġ?: Ġreturn ĊĠĠĠĠĠ Ġval Ġelm Ġ= Ġdoc . get Character Element ( offset ) ĊĠĠĠĠĠ ĠEvent Queue . invoke Later Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġelm . start Offset ĊĠĠĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġelm . end Offset ĊĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġdoc . getText ( start , Ġend Ġ- Ġstart ) ĊĠĠĠĠĠĠĠĠĠ Ġvar Ġpos Ġ= Ġtext . indexOf ( face Mark ) ĊĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( pos Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġface Ġ= Ġdoc . getStyle ( face Mark ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdoc . set Character Attributes ( start Ġ+ Ġpos , Ġface Mark . length , Ġface , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpos Ġ= Ġtext . indexOf ( face Mark , Ġpos Ġ+ Ġface Mark . length ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġval Ġdoc Ġ= Ġtext Pane . styled Document ĊĠ Ġdoc . add Document Listener ( dl ) ĊĊĠ Ġval Ġface Ġ= Ġdoc . add Style ( face Mark , Ġdoc . getStyle ( Style Context . DEFAULT _ STYLE )) ĊĠ ĠStyle Constants . setIcon ( face , ĠFace Icon ()) ĊĠ Ġtext Pane . text Ġ= Ġ" aaa ĠðŁĻ Ĥ Ġ 1 2 3 4 5 Ġ:) Ġ 6 7 8 9 0 Ġ:-) Ġa aa \ n " ĊĊĠ Ġreturn ĠJPanel ( Border Layout ()). also Ġ{ ĊĠĠĠ Ġit . add ( J ScrollPane ( text Pane )) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠFace 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 . color Ġ= ĠColor . RED ĊĠĠĠ Ġg 2 . draw O val ( 1 , Ġ 1 , Ġ 1 4 , Ġ 1 4 ) ĊĠĠĠ Ġg 2 . draw Line ( 5 , Ġ 1 0 , Ġ 6 , Ġ 1 0 ) ĊĠĠĠ Ġg 2 . draw Line ( 7 , Ġ 1 1 , Ġ 9 , Ġ 1 1 ) ĊĠĠĠ Ġg 2 . draw Line ( 1 0 , Ġ 1 0 , Ġ 1 1 , Ġ 1 0 ) ĊĠĠĠ Ġg 2 . draw O val ( 4 , Ġ 5 , Ġ 1 , Ġ 1 ) ĊĠĠĠ Ġg 2 . draw O val ( 1 0 , Ġ 5 , Ġ 1 , Ġ 1 ) ĊĠĠĠ Ġ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 () ĊĠĠĠ Ġ} ĊĠĠĠ Ġ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 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ