如何在JavaFX的浏览器上创建一个Button?

时间:2015-09-21 21:21:32

标签: java button browser javafx

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

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);
    }
}

1 个答案:

答案 0 :(得分:1)

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

最简单的示例是使用以下内容替换 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以获取有关各种布局选项以及如何使用它们的进一步参考。