JavaFX阶段中的WebView大小

时间:2016-07-18 09:09:02

标签: java javafx webview javafx-2

我想更改JavaFx应用程序的StageWebView的大小。

我可以更改窗口大小,但浏览器大小不会从800px增加,因此html页面的显示不适合所有窗口。

看起来像这样(注意右边的浅灰色区域):

enter image description here

这是该页面的一些代码:

public class EfadosApp extends Application {
    private Scene scene;

    @Override public void start(Stage stage) {
        scene = new Scene(new Browser(), 1000,500);
        stage.setScene(scene);
        stage.show();
    }
}

class Browser extends Region {
    final WebView browser = new WebView();
    final WebEngine webEngine = browser.getEngine();

    public Browser() {
        webEngine.load("www.oracle.com");
        getChildren().add(browser);
    }
}

1 个答案:

答案 0 :(得分:3)

您可以通过扩展例如StackPane而不是Region来解决此问题:

class Browser extends StackPane {
    ...
}

区别在于Region将孩子的大小调整为他们的首选大小:

  

默认情况下,Region继承其超类的布局行为,   父,这意味着它将调整任何可调整大小的子节点的大小   他们的首选尺寸,但不会重新定位。如果申请   需要更具体的布局行为,然后它应该使用其中之一   区域子类:StackPane,HBox,VBox,TilePane,FlowPane,   BorderPane,GridPane或AnchorPane。

虽然StackPane尝试调整其子项的大小以适应内容区域:

  

stackpane将尝试调整每个子节点的大小以填充其内容   区域。如果孩子的大小不能填充堆叠窗格(或者   因为它不可调整大小或其最大大小阻止了它然后它   将使用alignment属性在区域内对齐   默认为Pos.CENTER。

这当然也意味着,如果您使用Region,但要么将WebView的{​​{3}}设置为"那么大的"像

browser.setPrefSize(5000, 5000);

或者您将heightProperty的{​​{1}}和widthProperty绑定到WebView的相应属性,

Stage

它也可以按预期工作。