0

可能重复:
如何在 JLabel 中添加超链接

在我的程序中,我正在使用 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”上得到输出没有次数。我明白了,但发生的事情是所有链接在单击时都显示相同的文件。帮助?

4

1 回答 1

2

如果我确实正确理解了您的问题,您希望允许用户打开文件。该类Desktop(从 JDK1.6 开始可用)允许这样做

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

根据您希望向用户呈现的方式,您可以选择JLabel带有侦听器的代码,但将 aJButtonActionListener. Marko Topolnik 在他的评论中已经建议的答案中详细讨论了这两种方法。唯一的区别是他们想打开一个 URL,而你想打开一个文件(因此答案使用browse方法而不是类的open方法Desktop)。

于 2012-04-17T21:55:26.423 回答