I want to fit the second scene (with pink color) to fit to the exact size of the anchorPane ( the green colored region)
The code is below
FormOne.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import java.net.URL?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane id="AnchorPane" prefHeight="500.0" prefWidth="600.0" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="javafx.test.controller.FormeOneController">
<stylesheets>
<URL value="@/javafx/test/style/formeone.css" />
</stylesheets>
<children>
<AnchorPane prefHeight="500.0" prefWidth="130.0" style="-fx-background-color: #660066;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<Button fx:id="btnPanel1" layoutX="31.0" layoutY="31.0" mnemonicParsing="false" onAction="#btnPanel1Action" text="Panel 1" />
<Button fx:id="btnPanel2" layoutX="31.0" layoutY="92.0" mnemonicParsing="false" onAction="#btnPanel2Action" text="Panle 2" />
<Button fx:id="btnPanel3" layoutX="31.0" layoutY="155.0" mnemonicParsing="false" onAction="#btnPanel3Action" text="Panle 3" />
</children>
</AnchorPane>
<AnchorPane fx:id="showPane" layoutX="128.0" prefHeight="500.0" prefWidth="472.0" style="-fx-background-color: #00ff00;" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="128.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
PanelOne.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" style="-fx-background-color: #ff00ff;" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" />
FormOneController.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javafx.test.controller;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
/**
* FXML Controller class
*
* @author Kasun Nirmala
*/
public class FormeOneController implements Initializable {
@FXML
private Button btnPanel1;
@FXML
private Button btnPanel2;
@FXML
private Button btnPanel3;
@FXML
private AnchorPane showPane;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
@FXML
private void btnPanel1Action(ActionEvent event) throws IOException {
AnchorPane pnlOne = FXMLLoader.load(this.getClass().getResource("/javafx/test/ui/PanelOne.fxml"));
showPane.getChildren().setAll(pnlOne);
}
}
You can simply do this by using the anchors of the
AnchorPane.What happens here? Every node has some internal properties. With the lines above you set the property how
pnlOneshould be layouted when it is a child of anAnchorPane.