JavaFXWebView浏览器 package-webviewbrowser; 导入java.util.List; 导入javafx.application.application; 导入javafx.beans.value.ChangeListener; 导入javafx.beans.value.observeValue; 导入javafx.event.ActionEvent; 导入javafx.event.EventHandler; 导入javafx.geometry.HPos; 导入javafx.geometry.Insets; 导入javafx.geometry.VPos; 导入javafx.scene.Node; 导入javafx.scene.scene; 导入javafx.scene.control.Button; 导入javafx.scene.control.TextField; 导入javafx.scene.layout.ColumnConstraints; 导入javafx.scene.layout.GridPane; 导入javafx.scene.layout.Pane; 导入javafx.scene.layout.Priority; 导入javafx.scene.layout.VBox; 导入javafx.scene.web.WebEngine; 导入javafx.scene.web.WebView; 导入javafx.stage.stage; 公共类WebViewBrowser扩展了应用程序{ @覆盖公共无效开始(阶段primaryStage)引发异常{ Pane root=新的WebViewPane(); 设置场景(新场景(根,1024768)); primaryStage.show(); } 公共静态void main(字符串[]args){ 发射(args); } /** *创建可调整大小的WebView窗格 */ 公共类WebViewPane扩展窗格{ 公共WebViewPane(){ VBox.setVgrow(this,Priority.ALWAYS); setMaxWidth(双倍最大值); setMaxHeight(双倍最大值); WebView视图=新建WebView(); 视图.setMinSize(500400); view.setPrefSize(500400); final WebEngine=view.getEngine(); 发动机负载(“http://www.google.com"); 最终文本字段位置字段=新文本字段(“http://www.google.com"); locationField.setMaxHeight(双倍最大值); 按钮goButton=新按钮(“Go”); goButton.setDefaultButton(true); EventHandler goAction=新的EventHandler(){ @重写公共无效句柄(ActionEvent事件){ eng.load(locationField.getText().startsWith(“http:/”)?locationField.getText(): “http://”+locationField.getText()); } }; goButton.setOnAction(goAction); locationField.setOnAction(goAction); eng.locationProperty().addListener(新的ChangeListener()){ @覆盖公共无效已更改(ObservableValue

JavaFXWebView浏览器 package-webviewbrowser; 导入java.util.List; 导入javafx.application.application; 导入javafx.beans.value.ChangeListener; 导入javafx.beans.value.observeValue; 导入javafx.event.ActionEvent; 导入javafx.event.EventHandler; 导入javafx.geometry.HPos; 导入javafx.geometry.Insets; 导入javafx.geometry.VPos; 导入javafx.scene.Node; 导入javafx.scene.scene; 导入javafx.scene.control.Button; 导入javafx.scene.control.TextField; 导入javafx.scene.layout.ColumnConstraints; 导入javafx.scene.layout.GridPane; 导入javafx.scene.layout.Pane; 导入javafx.scene.layout.Priority; 导入javafx.scene.layout.VBox; 导入javafx.scene.web.WebEngine; 导入javafx.scene.web.WebView; 导入javafx.stage.stage; 公共类WebViewBrowser扩展了应用程序{ @覆盖公共无效开始(阶段primaryStage)引发异常{ Pane root=新的WebViewPane(); 设置场景(新场景(根,1024768)); primaryStage.show(); } 公共静态void main(字符串[]args){ 发射(args); } /** *创建可调整大小的WebView窗格 */ 公共类WebViewPane扩展窗格{ 公共WebViewPane(){ VBox.setVgrow(this,Priority.ALWAYS); setMaxWidth(双倍最大值); setMaxHeight(双倍最大值); WebView视图=新建WebView(); 视图.setMinSize(500400); view.setPrefSize(500400); final WebEngine=view.getEngine(); 发动机负载(“http://www.google.com"); 最终文本字段位置字段=新文本字段(“http://www.google.com"); locationField.setMaxHeight(双倍最大值); 按钮goButton=新按钮(“Go”); goButton.setDefaultButton(true); EventHandler goAction=新的EventHandler(){ @重写公共无效句柄(ActionEvent事件){ eng.load(locationField.getText().startsWith(“http:/”)?locationField.getText(): “http://”+locationField.getText()); } }; goButton.setOnAction(goAction); locationField.setOnAction(goAction); eng.locationProperty().addListener(新的ChangeListener()){ @覆盖公共无效已更改(ObservableValue,javafx,Javafx,添加选项卡以加载多个页面 这是一个选项卡式JavaFX浏览器示例项目,请查看该项目以了解如何实现这一点 添加“停止”按钮以停止加载页面 您可以尝试在按钮的操作处理程序中执行webView.getEngine().getLoadWorker().cancel();。我不确定WebEngine是否尊重取消请求 将Adobe Flash Player安装到我的浏览器 不能-WebView不支持Flash之类的插件 访问Youtube 使用YouTube兼容html5的视频播放界面,而不是基于flash

添加选项卡以加载多个页面

这是一个选项卡式JavaFX浏览器示例项目,请查看该项目以了解如何实现这一点

添加“停止”按钮以停止加载页面

您可以尝试在按钮的操作处理程序中执行
webView.getEngine().getLoadWorker().cancel();
。我不确定WebEngine是否尊重取消请求

将Adobe Flash Player安装到我的浏览器

不能-WebView不支持Flash之类的插件

访问Youtube

使用YouTube兼容html5的视频播放界面,而不是基于flash的界面

我创造了一些

警告:检测到错误的驱动程序版本,设备已禁用。请将驱动程序更新到至少版本8.15.10.2302


您的显示驱动程序已过期,不符合使用JavaFX的最低要求-您应该将其更新为新版本。

我建议您以后将问题分成多个单独的问题。您好,Jewelsea,您能发布一些与“willow browser”实现相关的示例应用程序代码吗。非常感谢。willow浏览器的示例使用代码位于中。您可以(使用maven)创建它,它将创建一个独立的浏览器应用程序。
package webviewbrowser;

import java.util.List;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.VPos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class WebViewBrowser extends Application {

    @Override public void start(Stage primaryStage) throws Exception {
        Pane root = new WebViewPane();
        primaryStage.setScene(new Scene(root, 1024, 768));
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }

    /**
     * Create a resizable WebView pane
     */
    public class WebViewPane extends Pane {

        public WebViewPane() {
            VBox.setVgrow(this, Priority.ALWAYS);
            setMaxWidth(Double.MAX_VALUE);
            setMaxHeight(Double.MAX_VALUE);

            WebView view = new WebView();
            view.setMinSize(500, 400);
            view.setPrefSize(500, 400);
            final WebEngine eng = view.getEngine();
            eng.load("http://www.google.com");
            final TextField locationField = new TextField("http://www.google.com");
            locationField.setMaxHeight(Double.MAX_VALUE);
            Button goButton = new Button("Go");
            goButton.setDefaultButton(true);
            EventHandler<ActionEvent> goAction = new EventHandler<ActionEvent>() {
                @Override public void handle(ActionEvent event) {
                    eng.load(locationField.getText().startsWith("http://") ? locationField.getText() :
                            "http://" + locationField.getText());
                }
            };
            goButton.setOnAction(goAction);
            locationField.setOnAction(goAction);
            eng.locationProperty().addListener(new ChangeListener<String>() {
                @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                    locationField.setText(newValue);
                }
            });
            GridPane grid = new GridPane();
            grid.setVgap(5);
            grid.setHgap(5);
            GridPane.setConstraints(locationField, 0, 0, 1, 1, HPos.CENTER, VPos.CENTER, Priority.ALWAYS, Priority.SOMETIMES);
            GridPane.setConstraints(goButton,1,0);
            GridPane.setConstraints(view, 0, 1, 2, 1, HPos.CENTER, VPos.CENTER, Priority.ALWAYS, Priority.ALWAYS);
            grid.getColumnConstraints().addAll(
                    new ColumnConstraints(100, 100, Double.MAX_VALUE, Priority.ALWAYS, HPos.CENTER, true),
                    new ColumnConstraints(40, 40, 40, Priority.NEVER, HPos.CENTER, true)
            );
            grid.getChildren().addAll(locationField, goButton, view);
            getChildren().add(grid);
        }

        @Override protected void layoutChildren() {
            List<Node> managed = getManagedChildren();
            double width = getWidth();
            double height = getHeight();
            double top = getInsets().getTop();
            double right = getInsets().getRight();
            double left = getInsets().getLeft();
            double bottom = getInsets().getBottom();
            for (int i = 0; i < managed.size(); i++) {
                Node child = managed.get(i);
                layoutInArea(child, left, top,
                               width - left - right, height - top - bottom,
                               0, Insets.EMPTY, true, true, HPos.CENTER, VPos.CENTER);
            }
        }
    }
}
ant -f C:\\Users\\user\\Documents\\NetBeansProjects\\WebViewBrowser jfxsa-run
init:
Deleting: C:\Users\user\Documents\NetBeansProjects\WebViewBrowser\build\built-jar.properties
deps-jar:
Updating property file: C:\Users\user\Documents\NetBeansProjects\WebViewBrowser\build\built-jar.properties
compile:
Detected JavaFX Ant API version 1.2
Launching <fx:jar> task from C:\Program Files\Java\jdk1.7.0_09\lib\ant-javafx.jar
Launching <fx:deploy> task from C:\Program Files\Java\jdk1.7.0_09\lib\ant-javafx.jar
jfx-deployment:
jar:
run:
Device "Intel(R) HD Graphics Family" (\\.\DISPLAY1) initialization failed : 
WARNING: bad driver version detected, device disabled. Please update your driver to at least version 8.15.10.2302