A separation of a data from the visual representation. : JTextPane « Swing « Java Tutorial






import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.JToolBar;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;

public class DocumentModel {
  public static void main(String[] args) {
    final StyledDocument doc;
    final JTextPane textpane;

    JFrame f = new JFrame();

    f.setTitle("Document Model");

    JToolBar toolbar = new JToolBar();
    JButton boldb = new JButton("bold");
    JButton italb = new JButton("italic");
    JButton strib = new JButton("strike");
    JButton undeb = new JButton("underline");

    toolbar.add(boldb);
    toolbar.add(italb);
    toolbar.add(strib);
    toolbar.add(undeb);

    f.add(toolbar, BorderLayout.NORTH);

    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

    JScrollPane pane = new JScrollPane();
    textpane = new JTextPane();
    textpane.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));

    doc = textpane.getStyledDocument();

    Style style = textpane.addStyle("Bold", null);
    StyleConstants.setBold(style, true);

    style = textpane.addStyle("Italic", null);
    StyleConstants.setItalic(style, true);

    style = textpane.addStyle("Underline", null);
    StyleConstants.setUnderline(style, true);

    style = textpane.addStyle("Strike", null);
    StyleConstants.setStrikeThrough(style, true);

    boldb.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        doc.setCharacterAttributes(textpane.getSelectionStart(), textpane.getSelectionEnd()
            - textpane.getSelectionStart(), textpane.getStyle("Bold"), false);
      }
    });

    italb.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        doc.setCharacterAttributes(textpane.getSelectionStart(), textpane.getSelectionEnd()
            - textpane.getSelectionStart(), textpane.getStyle("Italic"), false);
      }

    });

    strib.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        doc.setCharacterAttributes(textpane.getSelectionStart(), textpane.getSelectionEnd()
            - textpane.getSelectionStart(), textpane.getStyle("Strike"), false);
      }

    });

    undeb.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        doc.setCharacterAttributes(textpane.getSelectionStart(), textpane.getSelectionEnd()
            - textpane.getSelectionStart(), textpane.getStyle("Underline"), false);
      }
    });

    pane.getViewport().add(textpane);
    panel.add(pane);

    f.add(panel);

    f.setSize(new Dimension(380, 320));
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);

  }
}








14.38.JTextPane
14.38.1.Difference between JEditorPane and JTextPane
14.38.2.TabStop and TabSet ClassesTabStop and TabSet Classes
14.38.3.Loading a JTextPane with Content: using StyleConstants to set Align, Font size, SpaceLoading a JTextPane with Content: using StyleConstants to set Align, Font size, Space
14.38.4.StyleConstants ClassStyleConstants Class
14.38.5.Change the Font size of JTextPane
14.38.6.SimpleAttribute: Bold, ItalicSimpleAttribute: Bold, Italic
14.38.7.SimpleAttribute: Bold, Italic, ColorSimpleAttribute: Bold, Italic, Color
14.38.8.Font family
14.38.9.Adding Icon to JTextPaneAdding Icon to JTextPane
14.38.10.Uses a listener label to display caret and selection status For JTextPaneUses a listener label to display caret and selection status For JTextPane
14.38.11.Using Actions with Text Components: JTextPane
14.38.12.Editor based on JTextPane
14.38.13.Create a right-aligned tab stop at 200 pixels from the left margin
14.38.14.Create a center-aligned tab stop at 300 pixels from the left margin
14.38.15.Create a decimal-aligned tab stop at 400 pixels from the left margin
14.38.16.Create a tab set from the tab stops
14.38.17.Setting the Font and Color of Text in a JTextPane Using Styles: Makes text red
14.38.18.Setting the Font and Color of Text in a JTextPane Using Styles: Inherits from Red; makes text red and underlined
14.38.19.Setting the Font and Color of Text in a JTextPane Using Styles: Makes text 24pts
14.38.20.Setting the Font and Color of Text in a JTextPane Using Styles: Makes text italicized
14.38.21.Customizing Tab Stops in a JTextPane Component
14.38.22.Inserting an Image into a JTextPane Component
14.38.23.Inserting a Component into a JTextPane Component
14.38.24.Inserting Styled Text in a JTextPane Component
14.38.25.A style can have multiple attributes; this one makes text bold and italic
14.38.26.Duplicate style
14.38.27.Italicize the entire paragraph containing the position 12
14.38.28.Listing the Styles Associated with a JTextPane
14.38.29.Listing the Attributes in a Style
14.38.30.Replace style
14.38.31.Set logical style; replaces paragraph style's parent
14.38.32.Get logical style and restore it after new paragraph style
14.38.33.Determining If a Style Attribute Applies to a Character or the Paragraph
14.38.34.Determine if the attribute is a color or a font-related attribute.
14.38.35.Sharing Styles Between JTextPanes
14.38.36.Background color
14.38.37.Foreground color
14.38.38.Enumerating the Paragraphs of a JTextPane Component
14.38.39.Displaying Simple HTML Files
14.38.40.JTextPane Look and Feel
14.38.41.A separation of a data from the visual representation.