javafx 使用webview 加载网页,可以看做是一个内嵌的浏览器。c/s 架构快速开发的一个可选方案。

import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.stage.Screen;
import javafx.stage.Stage;


/**
 * JavaFX App
 */
public class App extends Application {

    private static Scene scene;

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

    public void start(Stage primaryStage) {
        primaryStage.setTitle("标题demo");

        WebView webView = new WebView();

        StackPane root = new StackPane();
        webView.getEngine().load("https://www.baidu.com");
        root.getChildren().add(webView);
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
        // 让它默认全屏展示, 可以选择去掉
        primaryStage.setWidth(Screen.getPrimary().getVisualBounds().getWidth());
        primaryStage.setHeight(Screen.getPrimary().getVisualBounds().getHeight());
        primaryStage.setFullScreen(true);

        // 全屏监听器
        primaryStage.fullScreenProperty().addListener(new ChangeListener<Boolean>() {
            @Override
            public void changed(ObservableValue<? extends Boolean> prop, Boolean oldVal, Boolean newVal) {
                if(oldVal){ 
                // 如果退出全屏,让它最大化
                    Platform.runLater(()->{
                        primaryStage.setWidth(Screen.getPrimary().getVisualBounds().getWidth());
                        primaryStage.setHeight(Screen.getPrimary().getVisualBounds().getHeight());
                    });
                }
            }
        });
        // 最大化按钮监听,点击最大化时全屏
        primaryStage.maximizedProperty().addListener(new ChangeListener<Boolean>() {
            @Override
            public void changed(ObservableValue<? extends Boolean> prop, Boolean oldVal, Boolean newVal) {
                Platform.runLater(()->{
                    primaryStage.setFullScreen(true);
                });
            }
        });
    }



}
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐