JavaFX WebView使用FXML显示空白页面

时间:2015-12-04 09:40:23

标签: java javafx webview

我试图在JavaFX WebView组件中显示网站,但它只呈现一个空白页面。我按如下方式设置了所有内容:

MainController.java

public class MainController extends Application
{
    private Stage primaryStage;
    private Pane pane;

    @Override
    public void start(Stage primaryStage)
    {
        // ... Some proxy config here ...
        this.primaryStage = primaryStage;
        this.primaryStage.setTitle("Desmon");
        initRootLayout();
    }

    public void initRootLayout()
    {
        try
        {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainController.class.getResource("../view/Main.fxml"));
            pane = (Pane) loader.load();
            Scene scene = new Scene(pane);
            primaryStage.setScene(scene);
            primaryStage.show();
            MainViewController controller = loader.getController();
            controller.setMain(this);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }

    public Stage getPrimaryStage()
    {
        return primaryStage;
    }

    public static void main(String[] args)
    {
        launch(args);
    }
}

MainViewController.java

public class MainViewController
{
    @FXML
    private WebView webTEA;

    private MainController main;

    public MainViewController()
    {

    }

    @FXML
    private void initialize()
    {
        webTEA = new WebView();
        WebEngine we = webTEA.getEngine();
        we.load("http://this/is/my/url.php");
    }

    public void setMain(MainController main)
    {
        this.main = main;
    }
}

Main.fxml

<Pane minHeight="500.0" minWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="view.MainViewController">

<children>
    <WebView fx:id="webTEA" layoutX="14.0" layoutY="14.0" prefHeight="417.0" prefWidth="570.0" />
</children>

正如您所看到的,我还使用System.setProperty()设置了一些代理设置。我也尝试过没有特定的代理设置 - 我认为这不是问题。

我不知道自己做错了什么。如果我启动应用程序,我可以看到WebView组件,但没有内容。我只能右键单击并在上下文菜单中看到&#34; Reload&#34; -item。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您正在创建新的WebView,而不是使用FXMLLoader创建和注入的新webTEA = new WebView(); 。只需删除

initialize

WebView方法使用现有的WebView。否则,您初始化一个从未添加到场景图中的新function toggleAreas1() { var $hide = $("[class^=toggle-areas] > .row:visible"); $hide.fadeOut(function() { if ($hide.next().length) { $hide.next().fadeIn(); } else { $hide.prevAll().last().fadeIn(); } }); } 实例。