在 javafx gui 中更改 window 的大小时如何更改 ImageView 的大小
How to change size of ImageView when changing size of window in javafx gui
我以前没有太多使用 gui,但我正在尝试通过使用 SceneBuilder 构建 javafx 应用程序来学习它。现在我在调整 window.
大小时无法调整 ImageView 的大小
我正在使用 gridPane,我在 gridPane 中的一条路线内的 anchorPane 上放置了一个 ImageView。当我 运行 应用程序更改 window 的大小时,gridPane 正在更改大小,但 ImageView 不会更改大小。当我 运行 应用程序时 window 的大小时,我希望 Imageview 相应地改变大小。
已经尝试在论坛上阅读类似的问题,但没有找到我可以使用的解决方案,有没有人有好的方法来做到这一点?
非常感谢所有的回答。
为了简单起见,您可以使用绑定,这里是完整的示例代码
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage){
GridPane gridPane = new GridPane();
AnchorPane anchorPane = new AnchorPane();
// Set image with url
Image image = new Image("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR-524e2cCaY9TUn8vglN3nqqOlT0jIJIIty-Z81S49q9Np6Yws");
ImageView imageView = new ImageView(image);
// Bind the imageView width property to gridPane width property
// So, if width of gridPane change, the width of imageView automatically will be change
imageView.fitWidthProperty().bind(gridPane.widthProperty());
// Make the ratio same with original image
imageView.setPreserveRatio(true);
anchorPane.getChildren().add(imageView);
gridPane.getChildren().add(anchorPane);
Scene scene = new Scene(gridPane, 600, 400);
primaryStage.setTitle("Hello World");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我以前没有太多使用 gui,但我正在尝试通过使用 SceneBuilder 构建 javafx 应用程序来学习它。现在我在调整 window.
大小时无法调整 ImageView 的大小我正在使用 gridPane,我在 gridPane 中的一条路线内的 anchorPane 上放置了一个 ImageView。当我 运行 应用程序更改 window 的大小时,gridPane 正在更改大小,但 ImageView 不会更改大小。当我 运行 应用程序时 window 的大小时,我希望 Imageview 相应地改变大小。
已经尝试在论坛上阅读类似的问题,但没有找到我可以使用的解决方案,有没有人有好的方法来做到这一点?
非常感谢所有的回答。
为了简单起见,您可以使用绑定,这里是完整的示例代码
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage){
GridPane gridPane = new GridPane();
AnchorPane anchorPane = new AnchorPane();
// Set image with url
Image image = new Image("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR-524e2cCaY9TUn8vglN3nqqOlT0jIJIIty-Z81S49q9Np6Yws");
ImageView imageView = new ImageView(image);
// Bind the imageView width property to gridPane width property
// So, if width of gridPane change, the width of imageView automatically will be change
imageView.fitWidthProperty().bind(gridPane.widthProperty());
// Make the ratio same with original image
imageView.setPreserveRatio(true);
anchorPane.getChildren().add(imageView);
gridPane.getChildren().add(anchorPane);
Scene scene = new Scene(gridPane, 600, 400);
primaryStage.setTitle("Hello World");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}