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