2013-05-14 36 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