在我的程序中,我正在使用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”上没有时间输出。我得到了,但正在发生的是所有链接在点击时显示相同的文件。帮助
答案 0 :(得分:2)
如果我确实理解了您的问题,您希望允许用户打开文件。 Desktop
类(从JDK1.6开始提供)允许此
File fileToOpen = ...;
Desktop desktop = Desktop.getDesktop();
desktop.open( fileToOpen )
根据您希望向用户展示此内容的方式,您可以选择与监听器一起使用JLabel
代码,但使用JButton
ActionListener
可能更容易。这两种方法都在他的评论中已经提到的answer Marko Topolnik中详细讨论过。唯一的区别是他们想要打开一个URL,而你想打开一个文件(这样答案使用browse
方法而不是open
类的Desktop
方法。