2016-07-05 1 views
-1

Lorsque j'essaie de charger du code HTML ou des URL en utilisant webEngine.load();, ma page Web est simplement vide. De ce que j'ai lu ici "JavaFX 2.2 WebView" il semble que je vais devoir signer mon application pour le laisser fonctionner en dehors du mode bac à sable. http://docs.oracle.com/javafx/2/deployment/deploy_overview.htm#CEGJGHDAJavaFX FXML: WebView vide après chargement

Est-ce ce qui cause ce problème? J'utilise NetBeans 8.1, et sous Project Settings, je l'utilise en tant que Standalone. J'ai suivi ces tutoriels et chacun s'est bien passé. http://docs.oracle.com/javase/8/javafx/get-started-tutorial/get_start_apps.htm#JFXST804

Voici mes trois fichiers.

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

Si ceux qui downvoting ma question pourrait me dire pourquoi ils le font j'utiliser volontiers l'information pour améliorer ma question afin que je ne sois pas banni :) – dyllandry

+0

Je n'ai pas encore voté, mais il n'y a pas assez d'informations fournies dans votre question pour bien comprendre ce que vous demandez. Comment gérez-vous votre application? S'il ne s'agit pas d'une application intégrée au navigateur ou d'une application Webstart, elle dispose des privilèges système complets sans signature du code. Comme vous pouvez le voir dans [Principes de base de l'empaquetage] (https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/packaging.html#BABCIBAD), il existe plusieurs façons de compresser et d'exécuter des applications et vous faites cela peut affecter les privilèges de l'application. S'il s'agissait d'une erreur de privilège, il y aurait généralement une pile de traces. – jewelsea

+0

S'il s'agit d'une application embarquée dans un navigateur, ce serait une sorte d'application bizarre, car vous embarqueriez une vue web pour afficher html dans une application java dans un navigateur web pour afficher html. En outre, la prise en charge des applications intégrées au navigateur est [bientôt déconseillée] (https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free) par Oracle et est déjà ou sera bientôt [ne plus être pris en charge par les vendeurs du navigateur] (https://blogs.oracle.com/java-platform-group/entry/npapi_plugin_perspectives_and_the) non plus. – jewelsea

Répondre

1

Vous n'avez pas spécifié Contr oller dans votre FXML, donc la méthode initialize du contrôleur n'est jamais exécutée.

Ajouter la définition d'attribut suivant à l'élément VBox qui forme l'élément racine de votre FXML:

fx:controller="twitchauthorize.FXMLTwitchAuthorizeController" 
+0

J'ai littéralement trouvé cela par moi-même en voyant que mes instructions d'impression ne s'exécutaient pas, puis en démarrant un nouveau projet vide et en cherchant pourquoi mon contrôleur ne fonctionnait pas.Merci beaucoup pour l'aide @jewelsea. J'ai été sur ce problème depuis midi aha. – dyllandry