java stylesheet_Java Swing - 如何样式JTextPane与HTML CSS和StyleSheet

import java.awt.BorderLayout;

import java.awt.Container;

import javax.swing.JFrame;

import javax.swing.JTextPane;

import javax.swing.text.Element;

import javax.swing.text.html.HTMLDocument;

import javax.swing.text.html.HTMLEditorKit;

import javax.swing.text.html.StyleSheet;

public class Main extends JFrame {

StyleSheet styleSheet = new StyleSheet();

HTMLDocument htmlDocument;

HTMLEditorKit htmlEditorKit = new HTMLEditorKit();

Element bodyElement;

public static void main(String[] args) throws Exception {

Main jTextPaneApp = new Main();

jTextPaneApp.setVisible(true);

Thread.currentThread().sleep(1000);

jTextPaneApp.change();

}

public Main() {

setSize(400, 400);

styleSheet.addRule(".someclass1 {color: blue;}");

styleSheet.addRule(".someclass2 {color: green;}");

htmlEditorKit.setStyleSheet(styleSheet);

htmlDocument = (HTMLDocument) htmlEditorKit.createDefaultDocument();

JTextPane jTextPane = new JTextPane();

jTextPane.setEditorKit(htmlEditorKit);

jTextPane.setDocument(htmlDocument);

try {

Element htmlElement = htmlDocument.getRootElements()[0];

bodyElement = htmlElement.getElement(0);

Container contentPane = getContentPane();

contentPane.add(jTextPane, BorderLayout.CENTER);

super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

addContent("test 1
");

addContent("test 2
");

} catch (Exception e) {

e.printStackTrace();

}

}

public void reapplyStyles() {

Element sectionElem = bodyElement

.getElement(bodyElement.getElementCount() - 1);

int paraCount = sectionElem.getElementCount();

for (int i = 0; i < paraCount; i++) {

Element e = sectionElem.getElement(i);

int rangeStart = e.getStartOffset();

int rangeEnd = e.getEndOffset();

htmlDocument.setParagraphAttributes(rangeStart, rangeEnd - rangeStart,

e.getAttributes(), true);

}

}

public void change() throws Exception {

styleSheet = htmlEditorKit.getStyleSheet();

styleSheet.addRule(".someclass1 {color: red;}");

reapplyStyles();

addContent("test 3
");

}

private void addContent(String content) throws Exception {

Element contentElement = bodyElement.getElement(bodyElement

.getElementCount() - 1);

StringBuffer sbHtml = new StringBuffer();

sbHtml.append("" + content + "
");

htmlDocument.insertBeforeEnd(contentElement, sbHtml.toString());

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值