gpt4 book ai didi

java - JTextPane 的 setContentType ("text/html")无法正常工作

转载 作者:太空狗 更新时间:2023-10-29 14:02:04 27 4
gpt4 key购买 nike

当您 setContentType("text/html") 时,它仅适用于通过 JTextPane.setText() 设置的文本。通过样式放入 JTextPane 的所有其他文本对内容类型“免疫”。

我的意思是:

private final String[] messages = {"first msg", "second msg <img src=\"file:src/test/2.png\"/> yeah", "<img src=\"file:src/test/2.png\"/> third msg"};

public TestGUI() throws BadLocationException {
JTextPane textPane = new JTextPane();
textPane.setEditable(false);
textPane.setContentType("text/html");

//Read all the messages
StringBuilder text = new StringBuilder();
for (String msg : messages) {
textext.append(msg).append("<br/>");
}
textPane.setText(text.toString());

//Add new message
StyledDocument styleDoc = textPane.getStyledDocument();
styleDoc.insertString(styleDoc.getLength(), messages[1], null);

JScrollPane scrollPane = new JScrollPane(textPane, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

//add scrollPane to the main window and launch
//...
}

一般来说,我有一个由 JTextPane 表示的聊天。我从服务器接收消息,处理它们——为特定情况设置文本颜色,将微笑标记更改为图像路径等。一切都在 HTML 的范围内进行。但是从上面的例子中可以清楚地看出,只有 setText 是 setContentType("text/html") 的主题,第二部分,其中添加的新消息由“text/plain”表示(如果我没记错的话).

是否可以将“text/html”内容类型应用于所有插入到 JTextPane 的数据?没有它,如果不实现非常复杂的算法就几乎不可能处理消息。

最佳答案

我认为您不应该使用 insertString() 方法来添加文本。我认为你应该使用类似的东西:

JTextPane textPane = new JTextPane();
textPane.setContentType( "text/html" );
textPane.setEditable(false);
HTMLDocument doc = (HTMLDocument)textPane.getDocument();
HTMLEditorKit editorKit = (HTMLEditorKit)textPane.getEditorKit();
String text = "<a href=\"abc\">hyperlink</a>";
editorKit.insertHTML(doc, doc.getLength(), text, 0, 0, null);

关于java - JTextPane 的 setContentType ("text/html")无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122611/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com