Как изменить размер ImageView при изменении размера окна в графическом интерфейсе javafx - PullRequest
0 голосов
/ 18 марта 2019

Раньше я мало работал с графическим интерфейсом, но я пытаюсь изучить его, создав приложение javafx с использованием SceneBuilder.Теперь у меня возникают проблемы с изменением размера ImageView при изменении размера окна.

Я использую gridPane, и я поместил ImageView на anchorPane внутри одного из маршрутов в gridPane.GridPane изменяет размер, когда я изменяю размер моего окна при запуске приложения, но ImageView не меняет размер.Я хочу, чтобы Imageview соответственно менял размер при изменении размера окна при запуске приложения.

пытался прочитать подобные проблемы здесь, на форуме, но не нашел решения, которое мог бы использовать,У кого-нибудь есть хороший способ сделать это?

Действительно ценю все ответы.

1 Ответ

2 голосов
/ 23 марта 2019

Вы можете использовать привязку для простоты, здесь полный пример кода

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);
    }
}

Fullscreen

Not fullscreen

...