fxml subscene
时间: 2024-12-21 22:10:57 浏览: 4
Sub:通过 Subscene 下载字幕的快速 CLI
FXML (Flexible Markup Language) 是 JavaFX 中的一个特性,它允许你将用户界面分解成多个独立的部分,每个部分称为 "SubScene"。SubScene 主要用于创建可复用、独立于主舞台的 UI 部分,或者作为嵌套视图以便更好地组织复杂的布局。
在 FXML 中,你可以定义一个 SubScene 元素,类似于一个 `<VBox>`、`<HBox>` 或 `<Scene>`,但它的作用是在另一个更大的场景中作为一个子区域显示。以下是基本的使用步骤:
1. **创建 SubScene**:
```xml
<SubScene id="subSceneId" fx:id="mySubScene">
<!-- 这里放置你的布局元素 -->
<GridPane>
<children>
<!-- 子元素 -->
</children>
</GridPane>
</SubScene>
```
2. **在主 Scene 中引用和使用 SubScene**:
在主的 FXML 文件中,通过 `fx:id` 引用 SubScene 并将其添加到场景的根节点,比如 `<BorderPane>` 的中心位置:
```xml
<BorderPane prefHeight="400.0" prefWidth="600.0">
<center>
<AnchorPane fx:id="mainCenter" />
</center>
<!-- 其他边的位置 -->
</BorderPane>
```
3. **Java 代码关联和显示**:
在对应的 Java 类中,通过 ` FXMLLoader` 加载 FXML,然后获取 `SubScene` 对象并插入到主场景:
```java
FXMLLoader loader = new FXMLLoader(getClass().getResource("/main.fxml"));
Parent root = loader.load();
BorderPane mainLayout = (BorderPane) loader.getController();
SubScene subScene = (SubScene) loader.getScene();
mainLayout.setCenter(subScene);
Stage primaryStage = (Stage) primaryStage.getScene().getWindow();
primaryStage.setScene(new Scene(root));
primaryStage.show();
```
阅读全文