[英]JavaFX Canvas in AnchorPane getwidth issue
我正在使用自定義Canvas類在JavaFX中創建一個Application。 自定義Canvas類沒有什么特別之處,它不包含任何代碼。 但是當我在其resize函數中放置斷點時,我注意到在調整窗口大小時實際上並沒有更新getWidth()
。
奇怪的是,如果我用不同的組件替換我的Canvas,比如按鈕,那么我沒有問題。 寬度正確更新。
public class MyApp extends Application
{
@Override
public void start(Stage primaryStage) throws Exception
{
primaryStage.setTitle("Test");
CustomCanvas canvas = new CustomCanvas();
AnchorPane.setTopAnchor(canvas, 0d);
AnchorPane.setLeftAnchor(canvas, 0d);
AnchorPane.setBottomAnchor(canvas, 0d);
AnchorPane.setRightAnchor(canvas, 0d);
AnchorPane root = new AnchorPane();
root.getChildren().add(canvas);
root.setPrefWidth(500);
root.setPrefHeight(500);
primaryStage.setScene(new Scene(root,500,500));
primaryStage.show();
}
public static void main(String[] args)
{
launch(args);
}
}
一些更多的測試顯示,基本上從Region
類繼承的所有組件都可以很好地調整大小。 region.isResizable()
方法返回true
。 另一方面,畫布在調用此方法時返回false
。
我當然可以通過綁定屬性來使用解決方法。 工作良好。
CustomCanvas canvas = new CustomCanvas();
canvas.widthProperty().bind(primaryStage.widthProperty());
canvas.heightProperty().bind(primaryStage.heightProperty());
但這讓我更加疑惑,為什么AnchorPane無法完成這項工作。 是有意還是JavaFX錯誤?
覆蓋Canvas.isResizable()以返回true。
然后重寫Canvas.resize()以調用Canvas.setWidth()和Canvas.setHeight()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.