JTextPane有这么个方法setStyledDocument(StyledDocument sd)
在这个地方,我可以传一个StyledDocument的实例做参数。那么就可以设置JTextPane了。
但是如果我有若干个StyledDocument的实例,想同时放在一个JTextPane中显示出来怎么办?
达人帮帮忙

解决方案 »

  1.   

    一个JTextPane只有一个StyledDocument,如果想在JTextPane中显示各种不同样式的文字,下面有个小例子可以参考:import javax.swing.*;
    import java.awt.*;
    import javax.swing.text.*;
    import java.io.*;public class Test {
    JFrame frame = null; JTextPane textPane = null; File file = null; Icon image = null; 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);
    // 字体大小
    // StyleConstants.setFontFamily(attrSet, "黑体");
    // 设置字体
    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.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200, 300);
    frame.setVisible(true);
    } public static void main(String[] args) {
    Test test = new Test();
    test.gui();
    }
    }
      

  2.   

    我自己也估计一个JTextPane只能有一个StyledDocument,但不知道是否有方法,可以对第二个StyledDocument进行解析,比如,解析为文字,图片,然后把文字图片加到第一个StyledDocument上?
    这是我自己的一点猜想,但不知道如何实施这个解析的过程。还请各位达人指教
      

  3.   

    查查API Docs,应该有方法将元素提取出来的。