JTextPane中的备用文本颜色

时间:2011-12-14 15:17:16

标签: swing types colors jtextpane mismatch

我正在尝试在JTextPane中替换文本颜色而不更改整个JTextPane的颜色。 我在网上发现了一个允许你这样做的课程,但是当我试图创建一个“ColorPane”对象来运行他提供的方法时,编译的代码却根本无效。我的笔记本电脑只播放了典型的“Windows禁止声音”。 所以我现在正在尝试添加我需要的方法,但是我遇到了一些类型不匹配的错误。

这是ColorPane类:(我刚拿出创建表的方法) http://www.java2s.com/Code/Java/Swing-JFC/ExtensionofJTextPanethatallowstheusertoeasilyappendcoloredtexttothedocument.htm

以下是类型不匹配错误的方法: http://pastebin.com/jWtQK0Va

谢谢!

1 个答案:

答案 0 :(得分:1)

看看你的问题,你似乎想在你的JTextPane中有多种颜色。 您只需将此方法放在代码中并根据需要提供参数。

    public void appendToPane(String yourText, Color colour)
    {
      StyleContext sc = StyleContext.getDefaultStyleContext();
      AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, colour);
      aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console");

      int len = tPane.getDocument().getLength();
      tPane.setCaretPosition(len);
      tPane.setCharacterAttributes(aset, false);
      tPane.replaceSelection(yourText);
    }

以上方法使用以下导入:

  • import javax.swing.text.AttributeSet;
  • import javax.swing.text.SimpleAttributeSet;
  • import javax.swing.text.StyleConstants;
  • import javax.swing.text.StyleContext;
  • import javax.swing.JTextPane;

tPane是JTextPane的对象。就像你希望你的名字以蓝色显示一样,将方法称为appendToPane(“你的名字”,Color.BLUE);现在,如果您希望其他文本显示为红色,则再次调用该方法appendToPane(“New Text”,Color.RED);。希望这将解决您要求的查询。

此致