2012-04-17 58 views
0

可能重複:
How to add hyperlink in JLabeljava - 如何使xml成爲超鏈接?

在我的計劃,我通過索引搜索使用Lucene,我檢索文件。我從Lucene的搜索中爲檢索到的文檔創建了XML文件。現在,我想將這些XML文件作爲超鏈接並顯示給用戶作爲搜索結果。那是我想要XML文件在用戶點擊這個超鏈接時打開。任何幫助表示讚賞!?

for(int i=0;i<file_count;i++) 
{ 
    file=str+index[i]+".xml"; 

JLabel label = new JLabel(file,JLabel.CENTER); 

label.setOpaque(true); 
label.setBackground(Color.RED); 
panel.add(label) ; 

label.addMouseListener(new java.awt.event.MouseAdapter() { 
      @Override 
public void mouseClicked(java.awt.event.MouseEvent evt) { 
if(evt.getClickCount() > 0) 
{ 

Runtime r= Runtime.getRuntime(); 
    try { 
     System.out.println("testing : Inside mouseclicked"); 
     Process p = r.exec("cmd.exe /c start "+file); 
     System.out.println("opened the file"); 
    } catch (IOException ex) { 
System.out.println(ex.getMessage()); 
System.out.println(); 
} 
} 
} 
}); 
} 

這是我所做的代碼。在這裏,我想在屏幕上輸出「file_count」no次數。我明白了,但是所發生的一切是所有鏈接在點擊時顯示相同的文件。幫幫我?

+0

較短的問題:如何創建超鏈接到文件?答案:results 2012-04-17 19:32:11

+0

@ChadNC:我嘗試過JLabel,但是MouseClicked操作存在問題!假設我有三個文件作爲輸出顯示,並且當我使用JLabel的鼠標點擊事件時,在輸出面板中它顯示了所有三個鏈接的相同文件。該怎麼辦? – 2012-04-17 19:45:39

+0

@SteveH .:不是HTML,我想用Java。 – 2012-04-17 19:46:59

回答

2

如果我的確瞭解你的問題,你想允許用戶打開一個文件。該Desktop類(可作爲JDK1.6的)允許該

File fileToOpen = ...; 
Desktop desktop = Desktop.getDesktop(); 
desktop.open(fileToOpen) 

根據您要如何呈現給用戶,你可以選擇你的JLabel代碼聽衆,但它可能是更容易使用JButtonActionListener。 Marko Topolnik在其評論中已提出的answer中詳細討論了這兩種方法。唯一的區別是他們想要打開一個URL,而您想打開一個文件(因此答案使用browse方法而不是Desktop類的open方法)。

+0

+1 A ['JEditorPane'中的'HyperlinkListener'](http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JEditorPane.html)是另一種方法。 – trashgod 2012-04-17 22:36:47