我的主要Window
的外觀由具有BorderPane
結構的FXML文件定義。該center
標籤定義如下:JavaFX - 基於加載的圖像大小調整窗口大小
<center>
<ScrollPane focusTraversable="false">
<content>
<Pane fx:id="mapArea">
<ImageView fx:id="mapImageView" />
</Pane>
</content>
</ScrollPane>
</center>
在程序中,用戶可以打開代表地圖的圖像文件,添加一些利益點,並保存所有版本。圖像可以是任何尺寸。我想要的是讓主窗口調整大小,以便在加載圖像時,它完全適合ImageView
,儘管用戶可以手動調整大小,例如,如果圖像對於顯示器來說太大。
現在在我的控制,我執行以下行加載圖像時:
double width = getMap().getImage().getWidth();
double height = getMap().getImage().getHeight();
mapImageView.prefWidth(width);
mapImageView.prefHeight(height);
這有一些奇怪的(對我)的影響。如果ImageView
是Scene
中唯一的Node
,但是窗口的高度設置爲使圖像可以完全顯示,但顯然不是。窗戶的寬度似乎沒有受到任何影響。
我曾嘗試擺弄周圍對不同的對象,minWidth
,maxWidth
,prefWidth
,setResizeable
等不同的屬性,但我覺得我在黑暗中跌跌撞撞我。我真的不知道這一切是如何結合在一起的,這聽起來像是一件應該微不足道的事情。
如果您需要更多代碼,請讓我知道。
我知道我可以通過訪問階段引用來設置窗口的字面高度/寬度,但是我必須手動進行計算,考慮菜單大小和其他佔用舞臺空間的UI元素的大小圖像視圖。在我看來,應該簡單地說「這個控件想要變得這麼大,請確保容器相應地調整自己」? – kai
你已經有一個'ScrollPane'和一個'Pane'包裹在你的'ImageView'上。嘗試在它們中的任何一個上調用'setPrefSize(width,height)',看看是否有效。 – AlmasB