java jtextarea.setfont_如何在JTextArea中更改文本颜色?

既然是可能的用途Highlighter(或HTML)用于JTextArea,此api实现了样式文本的简化选项。import java.awt.*;

import javax.swing.*;

import javax.swing.text.*;

public class TextPaneHighlighting {

private static final long serialVersionUID = 1L;

private Highlighter.HighlightPainter cyanPainter;

private Highlighter.HighlightPainter redPainter;

public TextPaneHighlighting() {

JFrame frame = new JFrame();

JTextPane textPane = new JTextPane();

textPane.setText("one\ntwo\nthree\nfour\nfive\nsix\nseven\neight\n");

JScrollPane scrollPane = new JScrollPane(textPane);

frame.add(scrollPane, BorderLayout.CENTER);//  Highlight some text

cyanPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.cyan);

redPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.red);

try {

textPane.getHighlighter().addHighlight(0, 3, DefaultHighlighter.DefaultPainter);

textPane.getHighlighter().addHighlight(8, 14, cyanPainter);

textPane.getHighlighter().addHighlight(19, 24, redPainter);

} catch (BadLocationException ble) {

}

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setPreferredSize(new Dimension(300, 200));

frame.setLocationRelativeTo(null);

frame.pack();

frame.setVisible(true);

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

TextPaneHighlighting tph = new TextPaneHighlighting();

}

});

}

}

相比较JTextPane还有更多的选项,例如,用HTML或不使用HTML、字体或通过使用HTML或直接将另一个JComponent放入(也知道JTextArea,但是.)import java.awt.*;

import javax.swing.*;

import javax.swing.text.*;

public class Fonts implements Runnable {

private String[] fnt;

private JFrame frm;

private JScrollPane jsp;

private JTextPane jta;

private int width = 450;

private int height = 300;

private GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

private StyledDocument doc;

private MutableAttributeSet mas;

private int cp = 0;

private Highlighter.HighlightPainter cyanPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.cyan);

private Highlighter.HighlightPainter redPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.red);

private Highlighter.HighlightPainter whitePainter = new DefaultHighlighter.DefaultHighlightPainter(Color.white);

private int _count = 0;

private int _lenght = 0;

public Fonts() {

jta = new JTextPane();

doc = jta.getStyledDocument();

jsp = new JScrollPane(jta);

jsp.setPreferredSize(new Dimension(height, width));

frm = new JFrame("awesome");

frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frm.setLayout(new BorderLayout());

frm.add(jsp, BorderLayout.CENTER);

frm.setLocation(100, 100);

frm.pack();

frm.setVisible(true);

jta.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

fnt = ge.getAvailableFontFamilyNames();

mas = jta.getInputAttributes();

new Thread(this).start();

}

@Override

public void run() {

for (int i = 0; i 

StyleConstants.setBold(mas, false);

StyleConstants.setItalic(mas, false);

StyleConstants.setFontFamily(mas, fnt[i]);

StyleConstants.setFontSize(mas, 16);

dis(fnt[i]);

try {

Thread.sleep(75);

} catch (Exception e) {

e.printStackTrace();

}

StyleConstants.setBold(mas, true);

dis(fnt[i] + " Bold");

try {

Thread.sleep(75);

} catch (Exception e) {

e.printStackTrace();

}

StyleConstants.setItalic(mas, true);

dis(fnt[i] + " Bold & Italic");

try {

Thread.sleep(75);

} catch (Exception e) {

e.printStackTrace();

}

StyleConstants.setBold(mas, false);

dis(fnt[i] + " Italic");

try {

Thread.sleep(75);

} catch (Exception e) {

e.printStackTrace();

}

}

jta.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

}

public void dis(String s) {

_count++;

_lenght = jta.getText().length();

try {

doc.insertString(cp, s, mas);

doc.insertString(cp, "\n", mas);

} catch (Exception bla_bla_bla_bla) {

bla_bla_bla_bla.printStackTrace();

}

if (_count % 2 == 0) {

try {

jta.getHighlighter().addHighlight(1, _lenght - 1, cyanPainter);

} catch (BadLocationException bla_bla_bla_bla) {

}

} else if (_count % 3 == 0) {

try {

jta.getHighlighter().addHighlight(1, _lenght - 1, redPainter);

} catch (BadLocationException bla_bla_bla_bla) {

}

} else {

try {

jta.getHighlighter().addHighlight(1, _lenght - 1, whitePainter);

} catch (BadLocationException bla_bla_bla_bla) {

}

}

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

Fonts fs = new Fonts();

}

});

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值