2016-07-05 2 views
-1

Когда я пытаюсь загрузить любой html или urls с помощью webEngine.load();, мой 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), существует множество способов упаковки и запуска приложений и того, как вы делаете это, что может влиять на приложения. Если бы это была ошибка привилегий, обычно была бы stacktrace. – jewelsea

+0

Если это встроенное приложение для браузера, это будет своего рода странное приложение, так как вы бы ввели веб-представление для отображения html внутри приложения Java в веб-браузере для отображения html. Кроме того, поддержка встроенных приложений для браузера [скоро будет устаревать] (https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free) от Oracle и уже или скоро будет [больше не поддерживается поставщиков браузеров] (https://blogs.oracle.com/java-platform-group/entry/npapi_plugin_perspectives_and_the). – jewelsea

ответ

1

Вы не указали CONTR oller в вашем FXML, поэтому метод инициализации контроллера никогда не выполняется.

Добавьте следующее определение атрибута в VBox элемент, который образует корневой элемент вашего FXML:

fx:controller="twitchauthorize.FXMLTwitchAuthorizeController" 
+0

Я буквально просто нашел это для себя, увидев, что мои инструкции печати не выполняются, а затем запускают новый пустой проект и ищут, почему мой контроллер не работает.Большое спасибо за помощь @jewelsea. Я был с этой проблемой с полудня ага. – dyllandry

Смежные вопросы