JavaFX: Как мне преобразовать этот пользовательский класс Pane (ImageViewPane.java) в FXML для импорта в SceneBuilder?
Я новичок в JavaFX, так что, пожалуйста, прости нубишизм.
Так что я делаю Picture Viewer. Я впервые проектирую графический интерфейс с парадигмой MVC, поэтому я не совсем уверен, что делаю.
Что я пытаюсь достичь:
Это просто обычный просмотрщик картинок. Как ваша стандартная программа Windows, которая открывается, когда вы хотите посмотреть на изображение.
Когда вы изменяете размер окна просмотра изображений, изображение автоматически умещается либо по ширине, либо по высоте изображения. Если есть какой-либо масштаб - он становится видоискателем.
Что я сделал:
Я использую ScenBuilder для разработки своих представлений. У меня сейчас 2 просмотра:
представление Root.fxml, которое является
BorderPane
только сMenuBar
на вершине сMenuItem
"Открыть", который вызываетFileChooser
и устанавливает MainApp.javacurrentImage
Image
свойство к тому, что выбрал пользователь.Вложенный внутри (
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>