我想更改JavaFx应用程序的Stage
和WebView
的大小。
我可以更改窗口大小,但浏览器大小不会从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);
}
}
答案 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
它也可以按预期工作。