读书人

JTextArea怎么改变单行字体颜色

发布时间: 2012-07-23 09:42:19 作者: rapoo

JTextArea如何改变单行字体颜色

JTextArea本身不具备这样的功能,它是纯文本组件,你可以使用JTextPane,通过操作Document文档来控制JTextPane显示的内容,下面的代码在一个JTextPane中显示了一个图标,三行文字,每行用不同的颜色和大小显示:

?

 import   javax.swing.*;     import   java.awt.*;     import   java.awt.event.*;     import   javax.swing.text.*;     import   java.io.*;         public   class   Test   {         JFrame   frame;         JTextPane   textPane;         File   file;         Icon   image;             public   Test(){             frame   =   new   JFrame("JTextPane");             textPane   =   new   JTextPane();             file   =   new   File("./classes/test/icon.gif");             image   =   new   ImageIcon(file.getAbsoluteFile().toString());         }             public   void   insert(String   str,   AttributeSet   attrSet)   {             Document   doc   =   textPane.getDocument();             str   ="\n"   +   str   ;             try   {                 doc.insertString(doc.getLength(),   str,   attrSet);             }             catch   (BadLocationException   e)   {                 System.out.println("BadLocationException:   "   +   e);             }         }             public   void   setDocs(String   str,Color   col,boolean   bold,int   fontSize)   {             SimpleAttributeSet   attrSet   =   new   SimpleAttributeSet();             StyleConstants.setForeground(attrSet,   col);             //颜色             if(bold==true){                 StyleConstants.setBold(attrSet,   true);             }//字体类型             StyleConstants.setFontSize(attrSet,   fontSize);             //字体大小             insert(str,   attrSet);         }             public   void   gui()   {             textPane.insertIcon(image);             setDocs("第一行的文字",Color.red,false,20);             setDocs("第二行的文字",Color.BLACK,true,25);             setDocs("第三行的文字",Color.BLUE,false,20);             frame.getContentPane().add(textPane,   BorderLayout.CENTER);             frame.addWindowListener(new   WindowAdapter()   {                 public   void   windowClosing(WindowEvent   e)   {                     System.exit(0);                 }});             frame.setSize(200,300);             frame.setVisible(true);         }         public   static   void   main(String[]   args)   {             Test   test   =   new   Test();             test.gui();         }     }
?转自:http://zhidao.baidu.com/question/42650312

读书人网 >开源软件

热点推荐