JTextAreaはどのように1行のフォントの色を変えますか?

2504 ワード

JTextArea自体はこのような機能を備えていません。テキストは純粋なコンポーネントです。JTextPaneを使って、Dockment文書を操作してJTextPaneの表示内容をコントロールします。下のコードはJTextPaneにアイコンを表示しました。3行の文字は各行に異なる色と大きさで表示されます。
 
 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   ="
" + 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