从JavaFX中的按钮创建Web视图

时间:2015-10-05 21:09:53

标签: button webview javafx

我有以下简单代码,其中有一个水平块,其中有两个按钮,剩余部分为空。现在,我想在用户按下" current"之后在免费部分内查看Webview。按钮。我已经做了类似的事情,但我无法管理布局,因为它是一个Jframe + JavaFX。我想在JavaFx中完全重新构建,因此我想将webview放在jfxPanel中(我认为它是最好的解决方案,其他任何建议都非常感谢)。我按下按钮时会看到webview,在这种情况下是当前的,因此我创建了一个句柄。那么,我该怎么做呢?

提前致谢

import java.util.ArrayList;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.geometry.VPos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Hyperlink;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.TilePane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Launcher extends Application {


        public static void main(String[] args) {
        launch(Launcher.class, args);
    }
        Button buttonCurrent;

    static HBox web;
    static MyBrowser browser_lau;


    public void start(Stage stage) {



        BorderPane border = new BorderPane();

        HBox hbox = addHBox();


        border.setTop(hbox);

        Scene scene = new Scene(border);
        stage.setScene(scene);
        stage.setTitle("Layout Sample");
        stage.show();

     buttonCurrent.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
                final JFXPanel jfxPanel = new JFXPanel();

               //border.setStyle("-fx-background-color: #ff0000;"); 




            }
        });


    }




    public HBox addHBox() {

        HBox hbox = new HBox();
        hbox.setPadding(new Insets(15, 12, 15, 12));
        hbox.setSpacing(10);   // Gap between nodes
        hbox.setStyle("-fx-background-color: #336699;");

        buttonCurrent = new Button("Current");
        buttonCurrent.setPrefSize(100, 20);

        Button buttonProjected = new Button("Projected");
        buttonProjected.setPrefSize(100, 20);

        hbox.getChildren().addAll(buttonCurrent, buttonProjected);

        return hbox;
    }

}    



}

1 个答案:

答案 0 :(得分:0)

以下是一些示例代码,可以帮助您入门,它会创建一些WebView并根据选择的单选按钮在它们之间切换。

current population

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class CountThePeople extends Application {
    private static final String CURRENT_URL =
        "http://www.census.gov/popclock/";
    private static final String PROJECTED_URL =
        "http://www.sciencedaily.com/releases/2015/08/150810110634.htm";

    @Override
    public void start(final Stage stage) throws Exception {
        WebView current = new WebView();
        current.getEngine().load(CURRENT_URL);
        WebView projected = new WebView();
        projected.getEngine().load(PROJECTED_URL);

        StackPane viewHolder = new StackPane();

        ToggleGroup choice = new ToggleGroup();

        RadioButton currentRadio = new RadioButton("Current");
        currentRadio.setToggleGroup(choice);
        RadioButton projectedRadio = new RadioButton("Projected");
        projectedRadio.setToggleGroup(choice);

        choice.selectedToggleProperty().addListener((observable, oldValue, newValue) -> {
            if (projectedRadio == newValue) {
                viewHolder.getChildren().setAll(projected);
            } else {
                viewHolder.getChildren().setAll(current);
            }
        });

        choice.selectToggle(currentRadio);

        VBox layout = new VBox(10, currentRadio, projectedRadio, viewHolder);
        layout.setPadding(new Insets(10));

        stage.setTitle("World Population");
        stage.setScene(new Scene(layout));
        stage.show();
    }

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