java - 我无法让我的 hyperlinkListener 提供 URL;它是 NULL 值

标签 java html hyperlink

我有一个正在构建的 Java Swing 应用程序。 我在其中创建了一个 JTextPane (displayPane),我已将其设置为接收 HTML 格式的文本。 我希望 HTML 有点动态,用户可以单击其中一个嵌入的图像并触发事件(在本例中是全屏查看图像)。 所以我构建了 HTML 并设置了 Pane 的文本,它工作正常。 然后我在 Pane 中添加了一个 HyperlinkListener 来监听所需的事件。 HyperlinkEvent 有一个 .getURL(),它会一直返回 NULL,即使图像出现在 JTextPane 中也是如此。

我真的希望 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>

最佳答案

好吧,我觉得很蠢... 我只是更好地阅读了文档.... 并注意到这一点: 获取描述

公共(public)字符串 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();

关于java - 我无法让我的 hyperlinkListener 提供 URL;它是 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10953560/

相关文章:

Java - Mysql Getter/Setter

java - xpath 2.0 for java 可能

java - Akka 性能问题

html - 如何使用 CSS 在 Ionic ion-segment-button 中使图标和文本并排显示?

javascript - Angularjs 在模板中导入 html

ios - IOS可以动态创建链接吗

javascript - 通过javascript将鼠标悬停添加到链接

java - Hibernate.update 是否需要重试?

html - 使用 Jumbotron、CSS 和 Wordpress 显示背景

excel - 在 Excel 中使用公式创建 URL