2011-11-24 108 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直接调用浏览器,但我不明白为什么。我假设你正在用图形显示器运行。 –