Java jTextPane带有常规和粗体文本的一行错失

时间:2016-01-28 09:19:58

标签: java text jtextpane

我有一个使用StyledDocument的TextPane。 如果键入消息,则首先将当前时间和其他用户IP添加到文档中 之后,用户输入的自定义消息将以粗体添加在其后面。

显然问题是大胆占用更多空间并使其放错位置导致: enter image description here < - 目前所以用于此过程的代码如下:

public void addText(String msg) {

	long timeMS = System.currentTimeMillis();
	Date instant = new Date(timeMS);
	SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
	String time = sdf.format(instant);
	SimpleAttributeSet bold = new SimpleAttributeSet();
	StyleConstants.setBold(bold, true);
	try {
	    StyledDocument doc = getChat().getStyledDocument();
	    doc.insertString(doc.getLength(), time + ": " + Client.getClient().getPartnerIP() + " >>", null);
	    doc.insertString(doc.getLength(), msg + "", bold);
	    JScrollBar sb = getChatScroller().getVerticalScrollBar();
	    sb.setValue(sb.getMaximum());
	} catch (BadLocationException e) {
	    e.printStackTrace();
	}
    }

我知道这可以使用htmlEditorKit轻松修复,但我不想使用htmlEditorKit。

1 个答案:

答案 0 :(得分:0)

Eventho我说我现在不想使用HTMLEditorKit,因为它是我能找到的唯一修复。

这是我目前的工作方法:

python-social-auth

并且不要忘记在TextPane上设置EditorKit!

public void addMsg(String msg, String from) {
String formattedMessage = String.format("%s%s<font color=#FF0000 size=5><b>%s</b></font>\n", from, (from == getUserName() ? " >>" : " &lt;&lt;"), msg);
addText(formattedMessage, true);
}