2016-07-05 138 views
-1

當我嘗試使用webEngine.load();加載任何html或url時,我的webView只是空白。從我在這裏讀到的「JavaFX 2.2 WebView」看來,我將不得不簽署我的應用程序,讓它在沙箱模式之外運行。 http://docs.oracle.com/javafx/2/deployment/deploy_overview.htm#CEGJGHDAJavaFX FXML:加載後的空白WebView

這是什麼導致這個問題?

我正在使用NetBeans 8.1,並且在項目設置下我將它作爲獨立運行。我一直在關注這些教程,並且每個教程都很好。 http://docs.oracle.com/javase/8/javafx/get-started-tutorial/get_start_apps.htm#JFXST804

這是我的三個文件。

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> 

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

} 

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.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"); 
    } 

} 
+0

如果那些誰是downvoting我的問題能告訴我,爲什麼他們這樣做我會很樂意使用信息以改善我的問題,所以我不會被禁止:) – dyllandry

+0

我還沒有投票,但沒有足夠的信息提供在您的問題,以充分理解你在問什麼。你如何運行你的應用程序?如果它不是瀏覽器嵌入式應用程序或webstart應用程序,那麼它具有完整的系統權限而無需簽署代碼。正如您可以從[打包基礎知識](https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/packaging.html#BABCIBAD)中看到的那樣,打包和運行應用程序的方法有很多,你這樣做可以影響應用程序權限。如果這是一個特權錯誤,通常會有一個堆棧跟蹤。 – jewelsea

+0

如果它是一個瀏覽器嵌入式應用程序,它將是一種奇怪的應用程序,因爲您將嵌入一個Web視圖,用於在Web瀏覽器內顯示html內部的Java應用程序中顯示html。此外,Oracle對瀏覽器嵌入式應用程序的支持[不久將被棄用](https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free),並且已經或即將[不再支持瀏覽器供應商](https://blogs.oracle.com/java-platform-group/entry/npapi_plugin_perspectives_and_the)。 – jewelsea

回答

1

您還沒有指定一個對照oller放在你的FXML中,所以控制器的初始化方法永遠不會執行。

以下的屬性定義添加到您形成的FXML根元素的垂直框元素:

fx:controller="twitchauthorize.FXMLTwitchAuthorizeController" 
+0

我簡直就是通過看到我的打印語句不執行然後啓動一個新的空項目並查找我的控制器不工作的原因而發現自己。非常感謝@jewelsea的幫助。我從中午開始就一直在討論這個問題。 – dyllandry