我正在尝试在我的应用程序中实现一个聊天功能。我已经使用了2个JEditorPane。一个用于保存聊天历史记录,另一个用于将聊天发送到前一个JEditorPane。
JEditorPane为文本/HTML型。
我遇到的问题是,当我在字符之间放置一个以上的空格时,它会被解析器自动删除,因为它是HTML!
我如何才能做到空格不被剥离呢?
example: hello world
becomes: hello world此外,我必须解析html标签,以便新的消息可以添加到历史窗口。
有比使用JEditorPane更好的选择吗?如果我使用JTextPane,会不会更容易实现?
我希望聊天框/窗格能够处理粗体,URL嵌入现在。
谢谢您,期待您的指导。
编辑:我正在尝试用相关的字符替换“”。
newHome[1] = newHome[1].replace(" ", newChar) newChar的值应该是多少?
编辑:我正在尝试:
newHome[1] = newHome[1].replaceAll(" ", " ");但它并没有产生结果。有什么想法吗?
编辑:@Thomas -谢谢!出于某种原因,我可以在你的答案上贴一张便条。
发布于 2010-04-28 20:53:56
使用HTML标记是在Swing文本组件中完成简单文本格式化的一种快速方法。然而,这并不是唯一的方法。
一种更复杂的方法是使用javax.swing.text.StyledDocument,您可以将不同的“样式”附加到该样式(因此而得名)。样式基本上是一组属性,例如,文本应该是粗体还是斜体,或者它应该具有什么颜色。
JTextPane提供了许多方便的方法来处理样式,而且它是JEditorPane的子类,这意味着它应该相当无缝地集成到您现有的代码中。例如,要将JTextPane中的一部分文本标记为粗体,可以使用如下代码:
JTextPane textPane = new JTextPane();
Style bold = textPane.addStyle("bold", null);
StyleConstants.setBold(bold, true);
textPane.setText("I'll be bold.");
textPane.getStyledDocument().setCharacterAttributes(8, 4, bold, true);类似地,您可以定义第二种样式,例如使用蓝色带下划线的字体,您可以使用它来显示超链接。
不幸的是,缺点是您必须自己处理链接的机制。虽然您可以使用javax.swing.event.HyperlinkListener等人的现有基础设施,但您将负责检测鼠标点击。同样的道理也适用于悬停和将光标变成手形符号等。
https://stackoverflow.com/questions/2721181
复制相似问题