2011-11-24 109 views
3

我想顯示一個java組件中的鏈接列表,不管它是什麼組件。 通過鏈接我的意思是一些網站的網址。 這些鏈接可以點擊,並打開在默認的網頁瀏覽器中選擇的URL,例如谷歌鉻/火狐(我不想顯示在Java網頁,只有鏈接)。在Java組件中顯示鏈接

我已經知道如何顯示單個鏈接,但我在顯示鏈接列表時遇到問題。我試圖這樣做:

public void appendTextToJEditorPane(String text) { 

    try { 
     Document doc = jEditorPane1.getDocument(); 
     String newLine = "\n"; 

     String url = "<html><a href=" + text + ">" + text + "<//a><//html>."; 

     doc.insertString(doc.getLength(), url, null); 
     doc.insertString(doc.getLength(), newLine, null); 

    } catch (BadLocationException exc) { 
     exc.printStackTrace(); 
    } 


} 

    appendTextToJEditorPane("http://google.pl"); 
    appendTextToJEditorPane("http://wp.pl"); 
    appendTextToJEditorPane("http://onet.pl"); 

但它不起作用,因爲HTML結束標記中的「/」問題。我在JEditorPane中獲得純文本。如何正確追加鏈接?

+1

什麼樣的Java組件? – adarshr

+0

真的沒關係 - 可以是JTextPane,JTextArea,JEditorPane,List .. – koleS

回答

2

您可以在JLabel組件中使用html。這意味着你也可以通過a-href使用鏈接。

label.setText("<html><a href="your-link">link</a></html>.") 
+0

這適用於顯示鏈接。謝謝! – koleS

+0

那麼這適用於單個鏈接。例如,我做了這樣的事情: String url =「http://google.com」; jEditorPane1.setText(「" + url + "。」); 但如何追加更多的鏈接? – koleS

+0

我談到了JLabel而不是JEditorPane,但它似乎也適用於其他組件。解決方案:包含您的標籤之間的鏈接。在一個setText方法中。使用StringBuilder構建帶鏈接的html文本的好方法。 – mishadoff

2

如果您可以製作一個鏈接HTML並在JEditorPane中打開此頁面,將幫助您減少代碼並實現您的要求。

我希望這對你有用。

1

在Swing中,可以將HTML格式的文本放在組件上。因此,使您的文本<html> < a href =「...」> ... </a > </html >應該是足夠的。
否則,你必須實現一個打開瀏覽器的ActionListener。您可以使用Desktop.browse(URI)方法執行此操作。

+0

謝謝。這是正確的,但我在最新的linux ubuntu版本中獲得桌面支持時遇到問題。方法Desktop.isSupported()返回false,我不知道如何解決它,因爲我不是Linux專家。任何想法也許? – koleS

+0

我不知道,但其他人可能會。這聽起來像是關於SO的另一個問題的好材料。 –

1

如果你讓你的組件可點擊,你可以在你的程序中用URL打開瀏覽器。請參閱java.lang.Desktop,具體瀏覽方法。

+0

如何使組件可點擊?什麼財產負責? – koleS

+0

如果將鼠標監聽器添加到您的組件或ActionListener中,並且它是一個按鈕,並且在您使用該事件調用偵聽器時打開瀏覽器。 –

+0

我從其他答案中看到,您遇到了桌面支持方面的問題。奇怪。可以使用java.lang.Process直接調用瀏覽器,但我不明白爲什麼。我假設你正在用圖形顯示器運行。 –