2012-04-17 6 views
0

Можно создать дубликат:
How to add hyperlink in JLabeljava - как сделать xml в гиперссылку?

В моей программе, я ищу по индексу с помощью Lucene и я извлечения файлов. Я создал файлы XML для извлеченных документов из поиска Lucene. Теперь я хочу сделать эти 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

Более короткий вопрос: как создать гиперссылку на файл? Ответ: results

+0

@ChadNC: Я попытался в JLabel, но есть проблема с действием MouseClicked! Предположим, у меня есть три файла, которые будут отображаться в качестве вывода, и когда я использую событие щелчка мыши JLabel, на панели вывода он отображает один и тот же файл для всех трех ссылок. Что делать? –

+0

@SteveH .: Не в HTML, я хочу на Java. –

ответ

2

Если я правильно понимаю ваш вопрос, вы хотите разрешить пользователю открывать файл. Desktop класс (доступен как из JDK1.6) это позволяет

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

В зависимости от того, как вы хотите, чтобы представить его пользователю, вы можете выбрать для вашего JLabel кода со слушателем, но это, вероятно, проще использовать JButton с ActionListener. Оба подхода подробно обсуждаются в answer Марко Топольник, уже предложенный в его комментарии. Единственное различие заключается в том, что они хотели открыть URL-адрес, в то время как вы хотите открыть файл (так что ответ использует метод browse вместо метода open класса Desktop).

+0

+1 Еще один подход - это ['HyperlinkListener' в' JEditorPane'] (http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JEditorPane.html). – trashgod

Смежные вопросы