使用JTextPane代替JTextArea实现每一行的字的颜色不一样

 

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;

public class TestJTextPane extends JFrame {
   private JTextPane textPane = new JTextPane(); 
   
   public TestJTextPane () {
      this.add(new JScrollPane(textPane), BorderLayout.CENTER);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setSize(800, 600);
      this.setLocationRelativeTo(null);

        Style def = textPane.getStyledDocument().addStyle(null, null);
        StyleConstants.setFontFamily(def, "verdana");
        StyleConstants.setFontSize(def, 12);
        Style normal = textPane.addStyle("normal", def);
        Style s = textPane.addStyle("red", normal);
        StyleConstants.setForeground(s, Color.RED);
        textPane.setParagraphAttributes(normal, true);
      
      for(int i=0; i<1000; i++){
           try {
            textPane.getDocument().insertString(textPane.getDocument().getLength(),
                  "hello, ", textPane.getStyle(i%2 == 0 ? "red" : "normal"));
         } catch (BadLocationException e1) {
         }
      }
   }
   
   public static void main(String[] args) {
      new TestJTextPane().setVisible(true);
   }

}


 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值