java - 如何在JavaFX的浏览器上制作按钮?

标签 java button browser javafx

我正在尝试使用 javafx 制作一个“启动器” .
这是我的代码:
我不确定您是否必须阅读所有这些代码,该代码是 here .
我正在尝试放置一个 javaFX“播放”按钮(我知道如何制作按钮以及如何设置 onclick 事件,但我不知道在哪里添加它:/)
你有主意吗?谢谢。

package fr.whiteplay.main.launcher;

public class Launcher{

    private static WebViewSample launcher;
    private static String[] a;

    public static void main(String[] args){
        launcher = new WebViewSample();
        a = args;
    }

    public static void start(){
        launcher.go(a);
    }
}


package fr.whiteplay.main.launcher;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;

public class WebViewSample extends Application{

    private Browser browser;
    private Scene scene;

    public void start(Stage stage){
        // create the scene
        stage.setTitle("WhitePlay");
        browser = new Browser();
        scene = new Scene(browser, 992, 620, Color.web("#000000"));
        stage.setScene(scene);
        stage.show();
    }

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


package fr.whiteplay.main.launcher;

import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Node;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;

class Browser extends Region{

    final WebView browser = new WebView();
    final WebEngine webEngine = browser.getEngine();

    public Browser(){
        getStyleClass().add("browser");
        webEngine.load("http://www.whiteplay.fr/launcher/index.html");
        getChildren().add(browser);
    }

    private Node createSpacer(){
        Region spacer = new Region();
        HBox.setHgrow(spacer, Priority.ALWAYS);
        return spacer;
    }

    protected void layoutChildren(){
        layoutInArea(browser, 0, 0, getWidth(), getHeight(), 0, HPos.CENTER, VPos.CENTER);
    }
}

最佳答案

场景根必须是一个结构化面板,而不是浏览器本身,其中包含浏览器、按钮和其他任何内容。

最简单的示例是将您的 WebViewSample.start() 方法替换为以下内容:

public void start(Stage stage){
    // create the scene
    stage.setTitle("WhitePlay");
    browser = new Browser();
    BorderPane root = new BorderPane();
    root.setCenter(browser);
    Button button = new Button("Play");
    root.setBottom(button);
    button.setOnAction(a -> System.out.println("Play"));
    scene = new Scene(root, 992, 620, Color.web("#000000"));
    stage.setScene(scene);
    stage.show();
}

检查this page有关各种布局选项以及如何使用它们的更多引用。

关于java - 如何在JavaFX的浏览器上制作按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32704760/

相关文章:

html - 跨度末尾的空格会影响后伪元素的绝对定位

javascript - RequireJS 缓存

java - Retrofit2+RxJava 在 OnNext() 中向 Model 类返回 null

java - java中其他包装对象如何以及为什么不使用常量池

javascript - 防止 jquery toggleClass 执行

javascript - 使用 JavaScript 获取浏览器窗口宽度/高度的最可靠方法是什么?

java - 在一个模型中组合 JAXB 和 JPA

java - JTree 不显示

html - 如何在 Bootstrap 按钮内制作响应式文本

android - 单击计算按钮时程序崩溃