2012-04-17 3 views
0

가능한 중복 : 내 프로그램에서
How to add hyperlink in JLabeljava - xml을 하이퍼 링크로 만드는 방법은 무엇입니까?

, 나는 루씬을 사용하여 인덱스를 검색하고 있는데이 파일을 검색하고 있습니다. 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

짧은 질문 : 파일에 대한 하이퍼 링크는 어떻게 만듭니 까? 답변 : results

+0

@ChadNC : JLabel에서 시도했지만 MouseClicked 액션에 문제가 있습니다! 출력으로 세 개의 파일이 표시되고 JLabel의 마우스 클릭 이벤트를 사용하는 경우 출력 패널에서 세 개의 모든 링크에 대해 동일한 파일을 표시하고 있다고 가정합니다. 무엇을해야합니까? –

+0

@SteveH .: HTML이 아니기 때문에 Java로 원한다. –

답변

2

질문을 올바르게 이해하면 사용자가 파일을 열 수 있도록 허용하려고합니다. (JDK1.6의로 사용 가능) Desktop 클래스는이

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

당신이 사용자에게이 제시하는 방법에 따라, 당신은 청취자와 JLabel 코드를 선택할 수 수 있지만을 사용하는 것이 더 쉬울 것입니다 JButtonActionListener입니다. 두 가지 접근법은 그의 논평에서 이미 제안 된 answer Marko Topolnik에서 자세히 논의됩니다. 유일한 차이점은 파일을 열려고 할 때 URL을 열고 싶다는 것입니다. 따라서 답변은 Desktop 클래스의 open 메서드 대신 browse 메서드를 사용합니다.

+0

+1 'JEditorPane'의 ['HyperlinkListener'] (http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JEditorPane.html)는 또 다른 접근법입니다. – trashgod

관련 문제