[英]JavaFX - Resize Window based on loaded image size
我的主要Window
外觀是由具有BorderPane
結構的FXML文件定義的。 center
標簽的定義如下:
<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
可以完全顯示ImageView
,但顯然不是。 窗口的寬度似乎根本沒有受到影響。
我嘗試在不同的對象上擺弄不同的屬性,如minWidth
, maxWidth
, prefWidth
, setResizeable
等,但是我感覺自己跌跌撞撞。 我真的不知道這一切是如何結合在一起的,這種聲音聽起來應該是微不足道的。
如果您需要更多代碼,請告訴我。
在JavaFX中,當您想為某個字段X設置值時,它通常會有一個對應的setX()方法。
prefWidth(double)
和prefHeight(double)
返回節點的寬度和高度的首選值。 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/Node.html#prefWidth-double-
如果要設置窗口(JavaFX Stage)的大小,則在start(Stage)
方法中,獲取對primaryStage
的引用。 加載圖像后,可以執行stage.setWidth(width)
和stage.setHeight(height)
示例:
public class YourJavaFXApp extends Application {
private Stage stage;
@Override
public void start(Stage primaryStage) throws Exception {
stage = primaryStage;
// some code here
}
}
如果要調整加載圖像的大小以適合當前窗口大小,則可以使用mapImageView.setFitWidth(width)
和mapImageView.setFitHeight(height)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.