JavaFX-FXML:加载后的空白WebView
当我尝试使用JavaFX-FXML:加载后的空白WebView,java,javafx,webview,sandbox,signing,Java,Javafx,Webview,Sandbox,Signing,当我尝试使用webEngine.load()加载任何html或URL时我的网络视图是空的。从我在这里读到的“”看来,我必须对应用程序进行签名,才能让它在沙盒模式之外运行。 这就是造成这个问题的原因吗 我使用的是NetBeans 8.1,在项目设置下,我以独立的方式运行它。我一直在遵循这些教程,每一个都进展顺利。 这是我的三份文件 FXML <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.media.
webEngine.load()加载任何html或URL时代码>我的网络视图是空的。从我在这里读到的“”看来,我必须对应用程序进行签名,才能让它在沙盒模式之外运行。
这就是造成这个问题的原因吗
我使用的是NetBeans 8.1,在项目设置下,我以独立的方式运行它。我一直在遵循这些教程,每一个都进展顺利。
这是我的三份文件
FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.media.*?>
<?import javafx.scene.web.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.text.*?>
<?import javafx.geometry.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="481.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<AnchorPane prefHeight="18.0" prefWidth="600.0">
<children>
<HBox layoutX="157.0" layoutY="14.0" prefHeight="64.0" prefWidth="287.0">
<children>
<Label text="TwitchAid">
<font>
<Font size="53.0" />
</font>
</Label>
<ImageView fitHeight="150.0" fitWidth="38.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@Twitchaid-Logo.png" />
</image>
</ImageView>
</children>
</HBox>
</children>
</AnchorPane>
<AnchorPane prefHeight="200.0" prefWidth="200.0">
<children>
<WebView fx:id="webView" prefHeight="405.0" prefWidth="600.0" />
</children>
</AnchorPane>
</children>
</VBox>
Controller.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package twitchauthorize;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
*
* @author Dylan
*/
public class TwitchAuthorize extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLTwitchAuthorize.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
stage.setResizable(false);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package twitchauthorize;
import javafx.fxml.FXML;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
/**
*
* @author Dylan
*/
public class FXMLTwitchAuthorizeController {
@FXML
private WebView webView;
@FXML
private void initialize(){
WebEngine engine = webView.getEngine();
engine.load("http://www.google.com");
}
}
您尚未在FXML中指定控制器,因此永远不会执行控制器的initialize方法
将以下属性定义添加到构成FXML根元素的VBox元素中:
fx:controller="twitchauthorize.FXMLTwitchAuthorizeController"
如果那些对我的问题投反对票的人能告诉我他们为什么这样做,我会很高兴地利用这些信息来改进我的问题,这样我就不会被禁止:)我还没有投反对票,但你的问题中没有提供足够的信息来完全理解你的问题。你是如何运行你的应用程序的?如果它不是浏览器嵌入式应用程序或webstart应用程序,则它具有完整的系统权限,而无需对代码进行签名。正如您从中看到的,打包和运行应用程序的方法有很多,您如何打包和运行应用程序会影响应用程序权限。如果是权限错误,通常会出现stacktrace。如果是浏览器嵌入式应用程序,则会是一种奇怪的应用程序,因为您将在web浏览器中的java应用程序中嵌入用于显示html的web视图,用于显示html。此外,对浏览器嵌入式应用程序的支持是由Oracle提供的,并且已经或即将提供。通过两次问题否决投票,您不会被禁止,您不必担心这一点。@jewelsea-如果这有帮助,我将使用NetBeans 8.1,并且在项目设置下,我将独立运行它。没有抛出错误,所以可能不是权限错误。我只是通过看到我的打印语句没有执行,然后启动一个新的空项目,并搜索我的控制器不工作的原因,自己发现了这一点。非常感谢您的帮助@jewelsea。我从中午开始就在这个问题上啊哈。