我正在聊天客户端,我有这个问题: 我想要做的是将JTextPane分成3个列,以便在第一个中输出用户名,在第二个中输出消息,在第三个中输出日期。 我尝试通过创建3个单独的JTextPane来做到这一点,然后同步它们的滚动条,一切似乎都完美地工作,直到我看到它对插入情感的影响。当消息有多行代码时,名称和日期的JTextPanes打印出新行,但表情符号具有不同的高度以及JTextPanes无法跟上它们的名称和日期。对于单行,我通过插入尺寸的空白图像(1px,表情符号的高度)来解决它,但这仅适用于其中一行。让我们回到我的问题。在我有多个JTextPanes的情况下,我不愿意继续头脑风暴如何解决问题,因为我确信更多的问题会像这样出现。还有另外一种方法吗?我可以只使用一个JTextPane来完成吗?以下是3个JTextPanes的工作原理截图:http://postimage.org/image/611z2807b/ 下面是我如何在Eclipse中构建JTextPanes的图片:http://postimage.org/image/n2ut4bf2f/ 我希望这是足够的信息,并提前感谢! 我没有提供SSCCE,因为我的代码是几百行,我只需要花一些时间来解决问题的重要部分,但如果这是必要的话,我会的。
答案 0 :(得分:2)
您可以按照http://java-sl.com/JEditorPaneTables.html
中的说明添加自定义表格添加3列表格,在行的单元格中放置您的内容。如果需要,您还可以设置不可见的边框。
答案 1 :(得分:0)
某些Java Swing组件是HTML-capable所以可能有JComponent
允许您按照描述的方式格式化文本输出(可能还有输入?)。
许多聊天客户端在同一字段中打印用户名和消息,因此您可以选择并复制用户名和消息。
答案 2 :(得分:0)
我认为只要一个JTextPane
,甚至几个,我就很难让这项工作做得很好。你最终会投入更多的工作来使它变得更坚固,而不是采取更简单的方法。
查看您提供的图片,我看到完美使用3列GridLayout
,每列垂直对齐顶部。
如果您发现在长时间聊天中遇到性能问题,然后可以优化性能。但是在你到达那里之前不要担心。