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

你可能感兴趣的:(JTextArea)