“resize()”方法对JavaFX中的Webview不起作用

时间:2017-12-04 13:38:23

标签: java javafx webview javafx-8

在我的部分代码中,我想更改WebView对象的大小。这是代码的一部分:

    textbox.setOnKeyPressed(new EventHandler<KeyEvent>() {
    @Override
    public void handle(KeyEvent ke) {
        if(ke.getCode() == KeyCode.ENTER){

            System.out.println("Enter pressed!");
            if(webEngine.isResizable())
                  System.out.println("It's Resizable!");
            webEngine.resize(300,200);     //doesn't work!

        }
    }
    });

它编译并运行时没有出现错误,“输入按下!”“它可调整大小!”消息显示在控制台上,当我按Enter键,但webEngine对象的大小不会改变!!!

有人可以帮我吗?感谢。

1 个答案:

答案 0 :(得分:1)

您应该尝试将WebView放在您选择的容器中,然后调整容器大小,您还应该在if语句周围添加括号,并添加大小调整,如此

VBox vbox = new VBox();
vbox.getChildren().add(webView);
if(vbox.isResizable()){
    System.out.println("It's Resizable!");
    vbox.resize(300,200);     //doesn't work!
}

我运行此代码来测试它并且它完美地运行,我的意思是它已调整大小

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        VBox vbox = new VBox();
        TextField textbox = new TextField();
        WebView webView = new WebView();
        WebEngine webEngine = webView.getEngine();
        webEngine.load("https://www.google.com/");

        textbox.setOnKeyPressed(ke -> {
            if(ke.getCode() == KeyCode.ENTER){

                System.out.println("Enter pressed!");

                if(vbox.isResizable()) {
                    System.out.println("It's Resizable!");
                    vbox.resize(300, 200);     //doesn't work!
                }
            }
        });

        vbox.getChildren().addAll(textbox,webView);
        Scene scene = new Scene(vbox);
        Stage stage = new Stage();
        stage.setScene(scene);
        stage.show();
    }

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