我以前在gui上工作不多,但是我试图通过使用SceneBuilder构建javafx应用程序来学习它。现在,我在调整窗口大小时无法调整ImageView的大小。
我正在使用gridPane,并且已将ImageView放在gridPane中的一条路线内的anchorPane上。当我运行应用程序时更改窗口大小时,GridPane正在更改大小,但是ImageView不会更改大小。我希望Imageview在运行应用程序时更改窗口的大小时相应地更改大小。
曾尝试在论坛上阅读类似的问题,但没有找到我可以使用的解决方案,有人能做到这一点吗?
真的很感谢所有答案。
答案 0 :(得分:2)
为简单起见,可以使用绑定,这里是完整的示例代码
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);
}
}