javafx imageview height: привязка свойств не работает - PullRequest
0 голосов
/ 03 мая 2018

Я столкнулся с проблемой при разработке демонстрационной программы JavaFX для просмотра изображений как новичок. здесь у меня есть ImageView в центральной позиции BorderPane, которая обернута StackPane и VBox. где StackPane всегда растет с VBox, и я связываю ImageView со свойством StackPane Width и Height, чтобы мой ImageView изменил свои setFitHeight и Weight при изменении размера окна. он работает нормально, как я хочу, но проблема в том, когда окно изменено с максимального размера изображения не изменить его высоту. Я обнаружил, что слушатель изменения высоты StackPane не вызывает. Поэтому я решил эту проблему, чтобы заархивировать свою цель. Это какая-то ошибка JavaFX или мои нехватки знаний?

вот мой код fxml для просмотра изображений:

   <center>
  <VBox fx:id="imageVBox" alignment="CENTER" BorderPane.alignment="CENTER">
     <BorderPane.margin>
        <Insets />
     </BorderPane.margin>
     <StackPane fx:id="stackPane" VBox.vgrow="ALWAYS">
        <ImageView fx:id="imageView" fitHeight="250.0" fitWidth="300.0" nodeOrientation="INHERIT" onDragDropped="#getDragImage" onDragOver="#dragOver" pickOnBounds="true" preserveRatio="true" StackPane.alignment="CENTER">
           <viewport>
              <Rectangle2D />
           </viewport>
        </ImageView>
     </StackPane>
  </VBox>

мой код Java, который связывает ImageView с StackPane:

        imageView.fitWidthProperty().bind(stackPane.widthProperty());
        imageView.fitHeightProperty().bind(stackPane.heightProperty());

проблема, с которой я столкнулся:

  1. окно моей программы при запуске

my program window when i run it

  1. развернуть окно

maximize window

  1. когда я изменяю его размер по умолчанию, возникла проблема, изображение не изменяется, как ожидалось

when i resize it to default the problem occured, image don't resize as expected

1 Ответ

0 голосов
/ 03 мая 2018

хорошо, я обнаружил проблему в ответе на этот пост JavaFX - BorderPane / StackPane не изменял размеры после изменения дочерних элементов , и проблема заключалась в том, что я не назначил StackPane минимальный размер, необходимый для отсечения , поэтому я публикую ответ, если он кому-нибудь поможет.

поэтому мой окончательно решенный код привязки выглядит так:

stackPane.setMinSize(0, 0);
imageView.fitWidthProperty().bind(stackPane.widthProperty());
imageView.fitHeightProperty().bind(stackPane.heightProperty());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...