Mega Code Archive

 
Categories / Java / Swing JFC
 

TextArea Views 2

/* Core SWING Advanced Programming  By Kim Topley ISBN: 0 13 083292 8        Publisher: Prentice Hall   */ import java.io.PrintStream; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.text.JTextComponent; import javax.swing.text.View; public class TextAreaViews2 {   public static void main(String[] args) {     try {         UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");     } catch (Exception evt) {}        JFrame f = new JFrame("Text Area Views #2");     JTextArea ta = new JTextArea(5, 32);     ta         .setText("That's one small step for man...\nOne giant leap for mankind.");     ta.setLineWrap(true);     ta.setWrapStyleWord(true);     f.getContentPane().add(ta);     f.setSize(200, 100);     f.setVisible(true);     ViewDisplayer.displayViews(ta, System.out);     try {       Thread.sleep(30000);       ViewDisplayer.displayViews(ta, System.out);     } catch (InterruptedException e) {     }   } } class ViewDisplayer {   public static void displayViews(JTextComponent comp, PrintStream out) {     View rootView = comp.getUI().getRootView(comp);     displayView(rootView, 0, comp.getDocument(), out);   }   public static void displayView(View view, int indent, Document doc,       PrintStream out) {     String name = view.getClass().getName();     for (int i = 0; i < indent; i++) {       out.print("\t");     }     int start = view.getStartOffset();     int end = view.getEndOffset();     out.println(name + "; offsets [" + start + ", " + end + "]");     int viewCount = view.getViewCount();     if (viewCount == 0) {       int length = Math.min(32, end - start);       try {         String txt = doc.getText(start, length);         for (int i = 0; i < indent + 1; i++) {           out.print("\t");         }         out.println("[" + txt + "]");       } catch (BadLocationException e) {       }     } else {       for (int i = 0; i < viewCount; i++) {         displayView(view.getView(i), indent + 1, doc, out);       }     }   } }