【发布时间】:2015-07-14 11:33:35
【问题描述】:
我已经做了几天的聊天程序,我完全不知道如何在不使用 HTML 的情况下创建一个好看的可点击文本。我尝试使用 HTML,但结果非常奇怪(见下文)。所以我现在只是使用 基本文本而不是 text/html。
我添加可点击文本的第一次尝试是使用JTextPane 的功能将Components 与文本一起插入。它插入并完美地工作,但它垂直偏移并且看起来很糟糕。我试图弄乱setAlignmentY,但没有运气将组件与文本对齐。
JLabel l = new JLabel(test);
l.setFont(this.getFont());
l.setCursor(new Cursor(Cursor.HAND_CURSOR));
l.setBackground(Color.RED); //Just so i could see it better for testing
l.addMouseListener(new FakeMouseListener());
this.insertComponent(l);
我使用JTextPane 并使用doc.insertString 插入文本。我使用系统行分隔符跳过行,因此单行可以包含多个doc.insertStrings(这是我在尝试使用 text/html 时遇到的麻烦)。
【问题讨论】:
-
作为一个快速说明,您可以在包含文本的文本窗格中嵌入一个组件,并使该组件响应点击(某些侦听器模型,取决于组件)。
-
@user1803551 是的,这就是我已经尝试过的。问题是组件垂直偏移并且看起来非常糟糕。它有效,只是看起来很糟糕。
-
哦,代码中的
this是JTextPane。那么 HTML 有什么不好呢?也许你可以张贴一张你想要的照片,因为我不知道你所说的“看起来很糟糕”。 -
图片是我遇到的问题。每次我插入时 - 而不是添加到当前的 HTML 元素,它会创建一个新元素,然后无论出于何种原因将插入的文本居中。很奇怪。
-
插入标签时,您是使用 insertComponent 方法还是经典的 add 方法插入组件?