JavaFX: Как мне преобразовать этот пользовательский класс Pane (ImageViewPane.java) в FXML для импорта в SceneBuilder?

Я новичок в JavaFX, так что, пожалуйста, прости нубишизм.

Так что я делаю Picture Viewer. Я впервые проектирую графический интерфейс с парадигмой MVC, поэтому я не совсем уверен, что делаю.

Что я пытаюсь достичь:

Это просто обычный просмотрщик картинок. Как ваша стандартная программа Windows, которая открывается, когда вы хотите посмотреть на изображение.

Когда вы изменяете размер окна просмотра изображений, изображение автоматически умещается либо по ширине, либо по высоте изображения. Если есть какой-либо масштаб - он становится видоискателем.

Что я сделал:

Я использую ScenBuilder для разработки своих представлений. У меня сейчас 2 просмотра:

  1. представление Root.fxml, которое является BorderPane только с MenuBar на вершине с MenuItem "Открыть", который вызывает FileChooser и устанавливает MainApp.java currentImageImage свойство к тому, что выбрал пользователь.

  2. Вложенный внутри (root.setCenter) это у меня есть представление ImageViewer.fxml, которое является AnchorPane который содержит только ImageView,

К сожалению, AnchorPane+ImageView комбинация не может достичь эффекта, которого я пытаюсь достичь.

К счастью, здесь я нашел обычай ImageViewPane класс, который делает именно то, что я хочу: изменяет размеры панели в зависимости от размера окна. Поэтому я хочу использовать его в AnchorPane, (Вот ImageViewPane.java)

Проблема в том, что SceneBuilder принимает только FXML для пользовательских классов, и я не знаю, как его преобразовать. Что мне нужно сделать?

Текущий ImageViewer.fxml:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.image.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="JImageViewer.view.ImageViewerController">
   <children>
      <ImageView fx:id="imageView" layoutX="107.0" layoutY="90.0" pickOnBounds="true" preserveRatio="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
   </children>
</AnchorPane>

0 ответов

Другие вопросы по тегам