Martin Erlic
Martin Erlic

Reputation: 5665

How can I anchor an ImageView to the center of its BorderPane area?

I've got a BorderPane layout with an ImageView, shown below, but the ImageView is always anchored to the top-left corner, and stays there when I resize the window. I would like to the ImageView to maintain anchor at the center of the section it has been bound to (red box). Is this possible using FXML?

enter image description here

FXML:

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

<?import javafx.scene.control.*?>
<?import javafx.scene.Group?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>

<VBox prefWidth="800.0" prefHeight="600.0" xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1">

    <BorderPane xmlns:fx="http://javafx.com/fxml" VBox.vgrow="ALWAYS">
        <top>
            <VBox alignment="TOP_CENTER">
                <ToolBar minHeight="50.0" prefHeight="50.0" prefWidth="800.0" stylesheets="@../css/style.css"
                         GridPane.rowIndex="1">
                    <ImageView fitHeight="35.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true">
                        <Image url="@../images/toolbar-logo.png"/>
                    </ImageView>
                </ToolBar>
                <MenuBar fx:id="menuBar" prefHeight="0.0" prefWidth="0.0"/>
            </VBox>
        </top>

        <left>
            <StackPane prefWidth="230.0" prefHeight="800.0">
                <ListView fx:id="listView"/>
            </StackPane>
        </left>

        <center>
            <StackPane>
                <ScrollPane>
                    <Group fx:id="selectionGroup">
                        <ImageView fx:id="mainImageView"/>
                    </Group>
                </ScrollPane>
            </StackPane>
        </center>

        <right>
            <TextField promptText="Text"  />
        </right>
    </BorderPane>

</VBox>

Upvotes: 0

Views: 464

Answers (1)

SedJ601
SedJ601

Reputation: 13858

Change:

        <StackPane>
            <ScrollPane>
                <Group fx:id="selectionGroup">
                    <ImageView fx:id="mainImageView"/>
                </Group>
            </ScrollPane>
        </StackPane>

To:

        <StackPane>
            <children>
                <ImageView fx:id="mainImageView" fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" />                    
            </children>
        </StackPane>

You may need to adjust the fitWidth and fitHeight attributes.

Upvotes: 1

Related Questions