javafx-同一阶段中的多个场景

javafx-同一阶段中的多个场景,javafx,scenebuilder,scene,stage,sametime,Javafx,Scenebuilder,Scene,Stage,Sametime,我想将第二个场景(粉色)调整为与锚烷(绿色区域)的精确大小相匹配 代码如下 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="AnchorPan

我想将第二个场景(粉色)调整为与锚烷(绿色区域)的精确大小相匹配

代码如下

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>

您只需使用
锚定按钮
即可完成此操作

@FXML
private void btnPanel1Action(ActionEvent event) throws IOException {
    AnchorPane pnlOne = FXMLLoader.load(this.getClass().getResource("/javafx/test/ui/PanelOne.fxml"));
    AnchorPane.setLeftAnchor(pnlOne, 0.0);
    AnchorPane.setTopAnchor(pnlOne, 0.0);
    AnchorPane.setRightAnchor(pnlOne, 0.0);
    AnchorPane.setBottomAnchor(pnlOne, 0.0);
    showPane.getChildren().setAll(pnlOne);
}

这里发生了什么?每个节点都有一些内部属性。通过上面的行,您可以设置属性
pnlOne
当它是
AnchorPane

的子对象时,应该如何布局
pnlOne
。两个内部
AnchorPane
需要放在
VBox
中。因此,您希望两个AnchorPane相互重叠吗?我想将外部fxml加载到此fxml的右侧
 /*
 * 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);
    }

}
@FXML
private void btnPanel1Action(ActionEvent event) throws IOException {
    AnchorPane pnlOne = FXMLLoader.load(this.getClass().getResource("/javafx/test/ui/PanelOne.fxml"));
    AnchorPane.setLeftAnchor(pnlOne, 0.0);
    AnchorPane.setTopAnchor(pnlOne, 0.0);
    AnchorPane.setRightAnchor(pnlOne, 0.0);
    AnchorPane.setBottomAnchor(pnlOne, 0.0);
    showPane.getChildren().setAll(pnlOne);
}