2012-06-08 5 views
1

나는 내가 만들고있는 Java Swing 응용 프로그램이 있습니다. HTML 형식의 텍스트를 가져 오도록 설정 한 JTextPane (displayPane)을 만들었습니다. HTML이 약간 동적이어서 사용자가 포함 된 이미지 중 하나를 클릭하고 이벤트 발생 (이 경우 전체 이미지보기) 할 수 있기를 바랍니다. 그래서 HTML을 작성하고 창의 텍스트를 설정하면 정상적으로 작동합니다. 그런 다음 원하는 이벤트를 수신하기 위해 창에 HyperlinkListener를 추가했습니다. HyperlinkEvent에는 이미지가 JTextPane에 표시 되더라도 NULL을 반환하는 .getURL()이 있습니다.URL을 제공하기 위해 hyperlinkListener를 가져올 수 없습니다. 그것은 NULL 값입니다

실제로는 getURL()을 실제로 작동 시켜서 "popWindow"에 던져 넣을 수있게 만들었습니다. (이미지를 보여주는 커다란 대화 상자를 만들었지 만, 그 이미지를 HyperlinkEvent)

미리 도움을 청하십시오.

자바 코드 :


private static void ShowAirportInfo(Airport airport) throws IOException {   
     HTMLEditorKit htmlKit = new HTMLEditorKit(); 
     displayPane.setEditorKit(htmlKit); 
     displayPane.setEditable(false); 
     displayPane.setText(buildHTMLAirportInfo(airport).toString()); 
     displayPane.setCaretPosition(0); //makes the pane go back to the top of the page after rendering the HTML. 


     displayPane.addHyperlinkListener(new HyperlinkListener() { 

     @Override 
     public void hyperlinkUpdate(HyperlinkEvent he) { 
      EventType eType= he.getEventType(); 
      URL url = he.getURL(); 

      if(eType.equals(EventType.ACTIVATED)){ 
       try { 
         popWindow.setImage(url.getPath()); 
        } catch (IOException ex) { 
         Logger.getLogger(Phaero.class.getName()).log(Level.SEVERE, null, ex); 
        } 
       popWindow.displayPane(); 
      }     
     } 
    });    
} 

는 HTML JTextPane의에 넣어 :


<html> 
<head> 
<style type="text/css">body {font-family:verdana,arial,sans-serif;font-size:10pt;margin:30px;}</style></head> 

<body> 
<h2>General Info</h2> 
<div><Table><tr><th align="right">ICAO:</><th align="left">VHHH</></tr><tr><th align="right">Name:</><th align="left">Hong Kong Intl</></tr><tr><th align="right">Location:</><th align="left"> HK</></tr><tr><th align="right">Elevation:</><th align="left">29</></tr><tr><th align="right">Longest Runway:</><th align="left">12469</></tr><th align="right">Lat:</><th align="left">22.30891944</></tr><tr><th align="right">Lon:</><th align="left">113.91460278</></tr></table></div><h2>AQP Status</h2> 
<li>Mountainous terrain.</li> 
<tr><td><a href="C:\Working\temp\airportDataDirectory\aqp\VHHH\overview\VHHH_overview.jpg"><img src="file:C:\Working\temp\airportDataDirectory\aqp\VHHH\overview\VHHH_overview.jpg" width=300 height=200></td><td><a href="C:\Working\temp\airportDataDirectory\aqp\VHHH\falconview\VHHH_falconview.jpg"><img src="file:C:\Working\temp\airportDataDirectory\aqp\VHHH\falconview\VHHH_falconview.jpg" width=300 height=200></td></tr><h2>Airport Comms</h2> 
<li>TWR - 118.4,118.2,118.7,null,null</li> 
<li>DEP - 123.8,124.05,null,null,null</li> 
<li>CLD - 129.9,124.65,null,null,null</li> 
<li>ATIS - 128.2,127.05,null,null,null</li> 
<li>APP - 119.1,119.35,null,null,null</li> 
<li>AFIS - 122.4,121,null,null,null</li> 
<li>GND - 122.55,121.6,null,null,null</li> 
<li>CAC - 120.6,null,null,null,null</li> 
<li>RDR - 133.7,null,null,null,null</li> 
<h2>Runways</h2> 
<li>Runway 07R/25L</li> 
<li>Dimensions: 12466 x 197</li> 
<li>Surface: PERMANENT</li> 
<li>Runway Condition: GOOD.</li> 
<li>LCN: 87</li> 
<li>Max demstrated Wingspan: null</li> 
<table><tr><td>Runway: 07R</td><td>Runway: 25L</td></tr><tr><td>Heading: null</td><td>Heading: null</td></tr><tr><td>Slope: 0</td><td>Slope: 0</td></tr><tr><td>Latitude: 22.296202019999999</td><td>Latitude: 22.30743056</td></tr><tr><td>Longitude: null</td><td>Longitude: null</td></tr><tr><td><img src="file:C:\Working\temp\airportDataDirectory\aqp\VHHH\runway\VHHH_rwy07R.jpg" width=200 height=200></td><td><img src="file:C:\Working\temp\airportDataDirectory\aqp\VHHH\runway\VHHH_rwy25L.jpg" width=200 height=200></td></tr></table><li>A - ALSF-2</li> 
<li>VASI Type: null</li><li> </li><li> </li><li>Runway 07L/25R</li> 
<li>Dimensions: 12469 x 197</li> 
<li>Surface: PERMANENT</li> 
<li>Runway Condition: GOOD.</li> 
<li>LCN: 87</li> 
<li>Max demstrated Wingspan: null</li> 
<table><tr><td>Runway: 07L</td><td>Runway: 25R</td></tr><tr><td>Heading: null</td><td>Heading: null</td></tr><tr><td>Slope: 0</td><td>Slope: 0</td></tr><tr><td>Latitude: 22.31040556</td><td>Latitude: 22.32163611</td></tr><tr><td>Longitude: null</td><td>Longitude: null</td></tr><tr><td><img src="file:C:\Working\temp\airportDataDirectory\aqp\VHHH\runway\VHHH_rwy07L.jpg" width=200 height=200></td><td><img src="file:C:\Working\temp\airportDataDirectory\aqp\VHHH\runway\VHHH_rwy25R.jpg" width=200 height=200></td></tr></table><li>A - ALSF-2</li> 
<li>VASI Type: null</li><li> </li><li> </li><h2>Remarks</h2> 
<li>Bird haz.</li> 
<li>Rwy 07R/25L clsd Mon, Wed, Thu fr 1730-2359Z. Rwy 07L/25R clsd Tue, Fri, Sat, Sun fr 1730-2359Z.</li> 
<li>All rwy are grooved. Ctc Apron Ctl (121.755) for Gnd Emerg.</li> 
<li>IFR TAKE-OFF MINIMUMS AND DEPARTURE PROCEDURES: Diverse departure not authorized.</li> 
<li>All oil grades avbl.</li> 
<li>A1 (Chevron USA C852-25113-380) SP0600-09-D.</li> 
</ul> 
</body> 

</html> 

답변

2

좋아, 내가 ...을 바보 같은 느낌이난 그냥 .... 문서가 더 나은 를 읽고 발견이 : 으로 getDescription

공공 문자열으로 getDescription()를

Get the description of the link as a string. This may be useful if a URL can't be formed from the description, in which case the associated URL would be null. 

REF ::

http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/event/HyperlinkEvent.html#HyperlinkEvent%28java.lang.Object,%20javax.swing.event.HyperlinkEvent.EventType,%20java.net.URL,%20java.lang.String%29

그래서 대신에 점점 URL, 설명을 얻을 수 있습니다. ... 이렇게 :

he.getDescription();

관련 문제