A Stylized Editor

We’ve now covered all the classes and interfaces related to the concept of document styles. The remainder of this chapter explores an in-depth example that shows how to create Styles and apply them to paragraphs in a document. This mini-word processor will have the following features:

  • User can define Styles, using a simple dialog box that allows attributes such as font size, line spacing, bold, and italics to be specified.

  • User can set the Style for the paragraph at the current cursor position.

  • User can modify a Style and see the changes reflected in all paragraphs using the modified Style.

This last item requires a bit of work. This is not trivial because the relationship between an Element and its Style is one-directional. That is, a Style has no knowledge of the Elements that refer to it. Therefore, when changes are made to a Style, the only way we can get the Elements to be redrawn with the new attributes is to keep track of which Elements use which Style. We’ll see one way to implement later.

The example consists of three classes: StyleFrame, StyleBox, and StylishDocument. StyleFrame is the main application frame. It contains a JTextPane for editing text and a JMenuBar that allows the user to create Styles, modify Styles, and set the Style for the paragraph at the current cursor position. The document used by the text pane is an instance of StylishDocument, an extension of DefaultStyledDocument that keeps track of which Elements use which Styles. Finally,

Get Java Swing now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.