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使用する方がおそらく簡単です。どちらのアプローチも、Marko Topolnik がコメントで既に提案した回答で詳しく説明されています。唯一の違いは、ユーザーは URL を開きたいのに対し、あなたはファイルを開きたいということです (そのため、答えはクラスのメソッドではなくメソッドを使用します)。JButtonActionListenerbrowseopenDesktop

于 2012-04-17T21:55:26.423 に答える