【问题标题】:WebView size in JavaFX StageJavaFX Stage 中的 WebView 大小
【发布时间】:2016-11-20 19:46:08
【问题描述】:

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

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

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

这是页面的一些代码:

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

【问题讨论】:

    标签: java javafx webview javafx-2


    【解决方案1】:

    您可以简单地通过扩展来解决这个问题,例如 StackPane 而不是 Region

    class Browser extends StackPane {
        ...
    }
    

    不同之处在于Region 将孩子调整为他们喜欢的大小:

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

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

    堆栈窗格将尝试调整每个子项的大小以填充其内容 区域。如果孩子无法调整大小以填充堆栈窗格( 因为它不可调整大小或它的最大尺寸阻止了它)然后它 将使用对齐属性在区域内对齐,这 默认为 Pos.CENTER。

    这当然也意味着,如果您使用 Region,但要么将 WebViewpreferred size 设置为“大事”,例如

    browser.setPrefSize(5000, 5000);
    

    或者你将WebViewheightPropertywidthProperty绑定到Stage的对应属性上,

    Browser browser = new Browser();
    browser.browser.prefHeightProperty().bind(stage.heightProperty());
    browser.browser.prefWidthProperty().bind(stage.widthProperty());
    scene = new Scene(browser, 1000, 500);
    

    它也会按您的预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 2017-07-19
      • 2014-11-08
      • 2015-12-07
      • 2023-03-18
      相关资源
      最近更新 更多