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();   
      }   
  } 
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值