Mega Code Archive

 
Categories / Java by API / Javax Swing
 

JTextPane setCharacterAttributes(AttributeSet attr, boolean replace)

import java.awt.Color; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextPane; import javax.swing.text.AttributeSet; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; import javax.swing.text.StyleContext; public class MainClass{   public static void main(String argv[]) {     ColorPane pane = new ColorPane();     for (int n = 1; n <= 400; n += 1) {       if (isPrime(n)) {         pane.append(Color.red, String.valueOf(n) + ' ');       } else if (isPerfectSquare(n)) {         pane.append(Color.blue, String.valueOf(n) + ' ');       } else {         pane.append(Color.black, String.valueOf(n) + ' ');       }     }     JFrame f = new JFrame("ColorPane example");     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     f.setContentPane(new JScrollPane(pane));     f.setSize(600, 400);     f.setVisible(true);   }   public static boolean isPrime(int n) {     if (n < 2)       return false;     double max = Math.sqrt(n);     for (int j = 2; j <= max; j += 1)       if (n % j == 0)         return false; // j is a factor     return true;   }   public static boolean isPerfectSquare(int n) {     int j = 1;     while (j * j < n && j * j > 0)       j += 1;     return (j * j == n);   }    } class ColorPane extends JTextPane {   public void appendNaive(Color c, String s) {     SimpleAttributeSet aset = new SimpleAttributeSet();     StyleConstants.setForeground(aset, c);     int len = getText().length();     setCaretPosition(len);      setCharacterAttributes(aset, false);     replaceSelection(s);   }   public void append(Color c, String s) {     StyleContext sc = StyleContext.getDefaultStyleContext();     AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c);     int len = getDocument().getLength();     setCaretPosition(len);      setCharacterAttributes(aset, false);     replaceSelection(s);    } }