JavaFX:hostservices.showDocument()性能不佳

时间:2016-06-15 15:13:23

标签: java javafx

对于JavaFX独立桌面应用程序,我使用hostservices.showDocument()在默认Web浏览器中打开URL。但在大多数情况下,如果我尝试使用此方法打开URL,则需要花费大量时间(20-30秒)才能打开浏览器。是否有任何已知的性能错误或有没有人有同样的问题?我没有awt.Desktop.getDesktop.browse()的问题(浏览器立即打开)但我不想在JavaFX应用程序中使用AWT堆栈。

1 个答案:

答案 0 :(得分:3)

很难说你的应用程序出错了,但它可能有助于孤立地研究这个问题。请尝试下面的完整示例,以帮助您隔离延迟。它在我的平台上打开至少<!DOCTYPE html> <html> <head> </head> <body> <script src="1.js"></script> <form name="frm" > <h2>Cotizacion</h2> <table class="Cotization"> <tbody> <tr> <th style="width:25%;font-size:16px;text-align:center;">Description</th> <th style="width:15%;" class="qtyhd" title="qtytt">Qty</th> <th style="width:15%;" class="ratehd" title="ratett">Rate</th> <th style="width:15%;" class="tlhd" title="totaltt">Total</th> </tr> <tr> <td>PV Grid Tied System</td> <td> <input id="system_qty" name="system_qty" value="1" type="number" /></td> <td> <input id="system_rate" name="system_rate" value="0" type="number" /></td> <td> <output id="system_total"> </output></td> </tr> <tr> <td>Solar Modules 250w</td> <td> <input id="modules_qty" name="modules_qty" value="0" type="number" /></td> <td> <input id="modules_rate" name="modules_rate" value="0" type="number" /></td> <td> <output id="modules_total"> </output></td> </tr> <tr> <td>Inverter</td> <td> <input id="inverter_qty" name="inverter_qty" value="1" type="number" /></td> <td> <input id="inverter_rate" name="inverter_rate" value="0" type="number" /></td> <td> <output id="inverter_total"> </output></td> </tr> <tr> <td>Aluminum Fames</td> <td> <input id="aluminum_qty" name="aluminum_qty" value="0" type="number" /></td> <td> <input id="aluminum_rate" name="aluminum_rate" value="0" type="number" /></td> <td> <output id="aluminum_total"> </output></td> </tr> <tr> <td>Service Disconnect</td> <td> <input id="servicedt_qty" name="servicedt_qty" value="1" type="number" /></td> <td> <input id="servicedt_rate" name="servicedt_rate" value="0" type="number" /></td> <td> <output id="servicedt_total"> </output></td> </tr> <tr> <td>Installation</td> <td> <input id="installation_qty" name="installation_qty" value="1" type="number" /></td> <td> <input id="installation_rate" name="installation_rate" value="0" type="number" /></td> <td> <output id="installation_total"> </output></td> </tr> <tr> <td>Down Payment</td> <td> <input id="dnpayment_qty" name="dnpayment_qty" value="-1" type="number" /></td> <td> <input id="dnpayment_rate" name="dnpayment_rate" value="0" type="number" /></td> <td> <output id="dnpayment_total"> </output></td> </tr> <tr> <td>Total </td> <td> </td> <td> </td> <td> <input value="" id="total" name="total"/></td> </tr> </tbody> </table> </form> <button id="btn" onclick="rr()">Click</button> </body> </html>一样快,即在一秒钟之内。

Desktop#browse()

附录:使用孤立的测试用例,@ Joe可以确定问题

  • import javafx.application.Application; import javafx.application.HostServices; import javafx.event.ActionEvent; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.StackPane; import javafx.stage.Stage; /** * @see http://stackoverflow.com/a/37839898/230513 */ public class Test extends Application { private final HostServices services = this.getHostServices(); @Override public void start(Stage primaryStage) { primaryStage.setTitle("Test"); Button button = new Button("Example"); button.setOnAction((ActionEvent e) -> { services.showDocument("http://example.com/"); }); StackPane root = new StackPane(); root.getChildren().add(button); Scene scene = new Scene(root, 320, 240); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } 一起发生;直接浏览器访问时发生

  • 是否出现长网址;使用短网址

  • 是否在一台计算机上发生; 在其他人身上发生。

罪魁祸首似乎是GDA G Data InternetSecurity&#34;行为分析代理,&#34; showDocument(),讨论了here