2013-05-14 37 views
0

因此,我正在使用Java中的某些东西,现在需要显示大量JTextComponents。我需要能够将任何文本组件中的单词转换为超链接,具体来说,单击这些单词时会调用某种方法。请注意,我不是在寻找一个真正的超链接,只要你点击一些文本,就会调用一个函数。我相信JTextPane可以使用组件解决这个问题,但我似乎无法弄清楚它。Java伪超链接

是的,这个问题已经存在,但另一个是重复的,它链接到的一个没有回答这个问题。

回答

3

JTextArea也可以为此工作。

  • 您可以使用MouseListener,然后通过viewToModel(Point pt)转换点击的位置。
  • 如果您需要所选行的开始,您可以使用javax.swing.text.Utilities.getRowStart(textArea, offset);,最后使用getRowEnd(...)
  • 您可以通过Map<String, SomeLink>查看选定的单词是否为链接词。

有关此示例,请检查我的答案here

+0

其实,我发现了一个更简单的方法来做到这一点,但我还有一个问题... 所以我找到了解决办法是选择的文本转换成使用的JTextPane的insertComponent方法一个新的组件。但是,当我创建一个像这样的新组件时,关联的文本会在原始行的下方偏移一点......这非常令人厌烦。 – user633314

3

如果JEditorPaneJTextPane是令人满意的JTextComponent,则HyperlinkListener将被调用以执行任何所希望的动作,如图这个完整example

image