-1

我正在开发一个聊天客户端,但我遇到了这个问题:我想要做的是将 JTextPane 分成 3 个列,以便在第一个列中显示用户名,在第二个列中显示消息和日期第三。我尝试通过创建 3 个单独的 JTextPane 来做到这一点,然后同步它们的滚动条,一切似乎都运行良好,直到我看到它对表情符号的插入有何反应。当消息有多行代码时,名称和日期的 JTextPanes 打印新行,但表情符号的高度不同,名称和日期 JTextPanes 无法跟上它们。对于单行,我通过插入尺寸的空白图像(1px,表情符号的高度)来解决它,但这仅适用于其中一行。让我们回到我的问题。一世' 在我有多个 JTextPanes 的情况下,我不愿意继续就如何解决问题进行头脑风暴,因为我确信更多的问题会像这样出现。还有其他方法可以绕过它吗?我可以只用一个 JTextPane 来做吗?怎么做?这是它如何与 3 个 JTextPanes 配合使用的屏幕截图:http://postimage.org/image/611z2807b/ 这是我如何在 Eclipse 中构建 JTextPanes 的图片:http://postimage.org/image/n2ut4bf2f/ 我希望这是足够的信息,并提前致谢!我没有提供 SSCCE,因为我的代码只有几百行,而且我确实需要一段时间才能删除问题的重要行,但如果真的有必要,我会的。

4

3 回答 3

2

您可以按照此处的说明添加自定义表http://java-sl.com/JEditorPaneTables.html

添加 3 列表格,将您的内容放置在行的单元格中。如果需要,您还可以设置不可见的边框。

于 2012-12-26T05:53:20.700 回答
0

一些 Java Swing 组件支持 HTML,因此可能有一个JComponent允许您按照您描述的方式格式化文本输出(也可能是输入?)。

许多聊天客户端在同一字段中打印用户名和消息,因此您可以选择并复制用户名和消息。

于 2012-12-25T17:37:07.670 回答
0

我认为你很难只用一个JTextPane或什至几个来完成这项工作。与采用更简单的方法相比,您最终会付出更多的工作来使其稳固。

查看您提供的图片,我看到完美使用 3 列GridLayout,每列垂直对齐顶部。

如果您发现在很长的聊天中遇到性能问题,那么您可以针对性能进行优化。但是在你到达那里之前不要担心它。

于 2012-12-25T17:51:39.337 回答