/*
Java Swing, 2nd Edition
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole
ISBN: 0-596-00408-7
Publisher: O'Reilly
*/
// TextComponentSampler.java
//An example of several text components including password fields and
//formatted fields.
//
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JEditorPane;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.border.TitledBorder;
import javax.swing.text.MaskFormatter;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
public class TextComponentSampler extends JFrame {
public static String word = "portmeiron";
public static String markup = "Questions are <font size=\"+1\" color=\"blue\">a burden</font> to others,\n"
+ "answers <font size=\"+2\" color=\"red\">a prison</font> for oneself.";
public TextComponentSampler() {
super("TextComponentSampler");
JTextField tf = new JTextField(word, 12);
JPasswordField pf = new JPasswordField(word, 12);
MaskFormatter formatter = null;
try {
formatter = new MaskFormatter("UUUUU");
} catch (java.text.ParseException ex) {
}
JFormattedTextField ftf = new JFormattedTextField(formatter);
ftf.setColumns(12);
ftf.setValue(word);
JTextArea ta1 = new JTextArea(markup);
JScrollPane scroll1 = new JScrollPane(ta1);
JTextArea ta2 = new JTextArea(markup);
ta2.setLineWrap(true);
ta2.setWrapStyleWord(true);
JScrollPane scroll2 = new JScrollPane(ta2);
JTextPane tp = new JTextPane();
tp.setText(markup);
// Create an AttributeSet with which to change color and font.
SimpleAttributeSet attrs = new SimpleAttributeSet();
StyleConstants.setForeground(attrs, Color.blue);
StyleConstants.setFontFamily(attrs, "Serif");
// Apply the AttributeSet to a few blocks of text.
StyledDocument sdoc = tp.getStyledDocument();
sdoc.setCharacterAttributes(14, 29, attrs, false);
sdoc.setCharacterAttributes(51, 7, attrs, false);
sdoc.setCharacterAttributes(78, 28, attrs, false);
sdoc.setCharacterAttributes(114, 7, attrs, false);
JScrollPane scroll3 = new JScrollPane(tp);
JEditorPane ep1 = new JEditorPane("text/plain", markup);
JScrollPane scroll4 = new JScrollPane(ep1);
JEditorPane ep2 = new JEditorPane("text/html", markup);
JScrollPane scroll5 = new JScrollPane(ep2);
// Done creating text components; now lay them out and make them pretty.
JPanel panel_tf = new JPanel();
JPanel panel_pf = new JPanel();
JPanel panel_ftf = new JPanel();
panel_tf.add(tf);
panel_pf.add(pf);
panel_ftf.add(ftf);
panel_tf.setBorder(new TitledBorder("JTextField"));
panel_pf.setBorder(new TitledBorder("JPasswordField"));
panel_ftf.setBorder(new TitledBorder("JFormattedTextField"));
scroll1.setBorder(new TitledBorder("JTextArea (line wrap off)"));
scroll2.setBorder(new TitledBorder("JTextArea (line wrap on)"));
scroll3.setBorder(new TitledBorder("JTextPane"));
scroll4.setBorder(new TitledBorder("JEditorPane (text/plain)"));
scroll5.setBorder(new TitledBorder("JEditorPane (text/html)"));
JPanel pan = new JPanel(new FlowLayout(FlowLayout.LEFT));
pan.add(panel_tf);
pan.add(panel_pf);
pan.add(panel_ftf);
Container contentPane = getContentPane();
contentPane.setLayout(new GridLayout(2, 3, 8, 8));
contentPane.add(pan);
contentPane.add(scroll1);
contentPane.add(scroll2);
contentPane.add(scroll3);
contentPane.add(scroll4);
contentPane.add(scroll5);
}
public static void main(String args[]) {
JFrame frame = new TextComponentSampler();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 450);
frame.setVisible(true);
}
}
|