4

作成しているJavaSwingアプリケーションがあります。その中で、HTML形式のテキストを取り込むように設定したJTextPane(displayPane)を作成しました。HTMLを少し動的にして、ユーザーが埋め込み画像の1つをクリックして、イベントを発生させることができるようにしたかったのです(この場合、画像を全画面表示します)。そこで、HTMLを作成し、ペインのテキストを設定すると、正常に機能します。次に、HyperlinkListenerをペインに追加して、目的のイベントをリッスンしました。HyperlinkEventには.getURL()があり、画像がJTextPaneに表示されてもNULLを返し続けます。

getURL()を実際に機能させて、作成した「popWindow」にスローできるようにします(画像を表示する大きなダイアログを作成するだけですが、HyperlinkEventからその画像を取得する必要があります)

助けてくれてありがとう。

Javaコード:


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(); 
            }                
        }
    });             
} 

JTextPaneに配置されるHTML:


 <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>

4

1 に答える 1

4

わかりました、私はばかげています...ドキュメントをよく読んだだけです....そしてこれに気づきました:getDescription

public String 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. 

参照::

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();

于 2012-06-11T17:27:09.350 に答える