簡體   English   中英

JavaFX-根據加載的圖像大小調整窗口大小

[英]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);

這對我有一些奇怪的影響。 設置窗口的高度,以便在ImageViewScene唯一的Node可以完全顯示ImageView ,但顯然不是。 窗口的寬度似乎根本沒有受到影響。

我嘗試在不同的對象上擺弄不同的屬性,如minWidthmaxWidthprefWidthsetResizeable等,但是我感覺自己跌跌撞撞。 我真的不知道這一切是如何結合在一起的,這種聲音聽起來應該是微不足道的。

如果您需要更多代碼,請告訴我。

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM