javafx-同一阶段中的多个场景
我想将第二个场景(粉色)调整为与锚烷(绿色区域)的精确大小相匹配 代码如下 FormOne.fxmljavafx-同一阶段中的多个场景,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
<?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);
}