首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java JEditorPane格式

Java JEditorPane格式
EN

Stack Overflow用户
提问于 2010-04-27 20:38:44
回答 1查看 2.1K关注 0票数 2

我正在尝试在我的应用程序中实现一个聊天功能。我已经使用了2个JEditorPane。一个用于保存聊天历史记录,另一个用于将聊天发送到前一个JEditorPane。

JEditorPane为文本/HTML型。

我遇到的问题是,当我在字符之间放置一个以上的空格时,它会被解析器自动删除,因为它是HTML!

我如何才能做到空格不被剥离呢?

代码语言:javascript
复制
example: hello               world

becomes: hello world

此外,我必须解析html标签,以便新的消息可以添加到历史窗口。

有比使用JEditorPane更好的选择吗?如果我使用JTextPane,会不会更容易实现?

我希望聊天框/窗格能够处理粗体,URL嵌入现在。

谢谢您,期待您的指导。

编辑:我正在尝试用相关的字符替换“”。

代码语言:javascript
复制
newHome[1] = newHome[1].replace(" ", newChar) 

newChar的值应该是多少?

编辑:我正在尝试:

代码语言:javascript
复制
newHome[1] = newHome[1].replaceAll(" ", " ");

但它并没有产生结果。有什么想法吗?

编辑:@Thomas -谢谢!出于某种原因,我可以在你的答案上贴一张便条。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-28 20:53:56

使用HTML标记是在Swing文本组件中完成简单文本格式化的一种快速方法。然而,这并不是唯一的方法。

一种更复杂的方法是使用javax.swing.text.StyledDocument,您可以将不同的“样式”附加到该样式(因此而得名)。样式基本上是一组属性,例如,文本应该是粗体还是斜体,或者它应该具有什么颜色。

JTextPane提供了许多方便的方法来处理样式,而且它是JEditorPane的子类,这意味着它应该相当无缝地集成到您现有的代码中。例如,要将JTextPane中的一部分文本标记为粗体,可以使用如下代码:

代码语言:javascript
复制
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等人的现有基础设施,但您将负责检测鼠标点击。同样的道理也适用于悬停和将光标变成手形符号等。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2721181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档