JavaFX FXML模式下的布局

devtools/2025/1/3 5:29:29/
  1. 常见布局方式概述
    • 在 JavaFX FXML 模式下,有多种布局方式可供选择。这些布局方式可以帮助您有效地组织和排列 UI 组件,以创建出美观且功能良好的用户界面。
  2. 常用布局容器及布局方式
    • BorderPane 布局
      • 特点:BorderPane 将空间划分为五个区域,分别是顶部(top)、底部(bottom)、左侧(left)、右侧(right)和中心(center)。这种布局方式非常适合创建具有明确区域划分的界面,如主窗口布局,其中中心区域可以放置主要内容,顶部放置菜单或标题栏,底部放置状态栏等。
      • 示例用法
        • 在 FXML 文件中,可以这样定义一个 BorderPane 布局:

          <?xml version="1.0" encoding="UTF - 8"?>
          <?import javafx.scene.layout.BorderPane?>
          <BorderPane xmlns:fx="http://javafx.com/fxml/1"><top><Label text="这是顶部区域"/></top><bottom><Label text="这是底部区域"/></bottom><left><Label text="这是左侧区域"/></left><right><Label text="这是右侧区域"/></right><center><Label text="这是中心区域"/></center>
          </BorderPane>
          
        • 在这个例子中,我们通过在 BorderPane 的不同区域放置Label组件来展示其布局方式。各个区域的组件会按照 BorderPane 的布局规则自动排列。
    • VBox 和 HBox 布局
      • 特点:VBox(垂直盒子)布局是将组件按照垂直方向排列,而 HBox(水平盒子)布局则是将组件按照水平方向排列。它们可以方便地用于创建表单、工具条等需要组件在一个方向上排列的界面部分。这些布局容器可以设置组件之间的间距、对齐方式等属性。
      • 示例用法
        • 以下是一个 VBox 布局的 FXML 示例:

          <?xml version="1.0" encoding="UTF - 8"?>
          <?import javafx.scene.layout.VBox?>
          <?import javafx.scene.control.Button?>
          <VBox xmlns:fx="http://javafx.com/fxml/1"><Button text="按钮1"/><Button text="按钮2"/><Button text="按钮3"/>
          </VBox>
          
        • 在这个 VBox 布局中,三个Button组件会按照垂直方向依次排列。如果要使用 HBox 布局,只需将VBox标签替换为HBox标签,组件就会按照水平方向排列。
    • GridPane 布局
      • 特点:GridPane 布局允许您将组件放置在一个二维的网格中。通过指定组件在网格中的行和列位置,可以创建出表格形式的布局,非常适合用于布局数据表格、表单等需要行列对齐的界面。它可以灵活地设置每个单元格的大小、组件在单元格中的对齐方式等。
      • 示例用法
        • 下面是一个简单的 GridPane 布局示例:

          <?xml version="1.0" encoding="UTF - 8"?>
          <?import javafx.scene.layout.GridPane?>
          <?import javafx.scene.control.Label?>
          <?import javafx.scene.control.TextField?>
          <GridPane xmlns:fx="http://javafx.com/fxml/1"><Label text="姓名:" GridPane.rowIndex="0" GridPane.columnIndex="0"/><TextField GridPane.rowIndex="0" GridPane.columnIndex="1"/><Label text="年龄:" GridPane.rowIndex="1" GridPane.columnIndex="0"/><TextField GridPane.rowIndex="1" GridPane.columnIndex="1"/>
          </GridPane>
          
        • 在这个例子中,我们使用 GridPane 布局创建了一个简单的表单。LabelTextField组件分别放置在网格的不同行和列位置,通过设置GridPane.rowIndexGridPane.columnIndex属性来指定组件的位置。
    • StackPane 布局
      • 特点:StackPane 布局是将所有组件堆叠在一起,后添加的组件会覆盖前面添加的组件(可以通过设置透明度等方式来调整显示效果)。这种布局方式适用于创建一些具有重叠效果的界面,如提示信息框覆盖在主界面上、图片和文字叠加等场景。
      • 示例用法
        • 例如,以下是一个 StackPane 布局的 FXML 示例:

          <?xml version="1.0" encoding="UTF - 8"?>
          <?import javafx.scene.layout.StackPane?>
          <?import javafx.scene.paint.Color?>
          <?import javafx.scene.shape.Rectangle?>
          <?import javafx.scene.text.Text?>
          <StackPane xmlns:fx="http://javafx.com/fxml/1"><Rectangle width="100" height="100" fill="blue"/><Text text="这是叠加的文字" fill="white"/>
          </StackPane>
          
        • 在这个 StackPane 布局中,Rectangle组件先被添加,Text组件后被添加,所以文字会叠加在矩形上面,并且可以通过设置文字的填充颜色等属性来使其在蓝色矩形背景上更清晰地显示。


http://www.ppmy.cn/devtools/146887.html

相关文章

Python入门系列二-控制结构与函数

在Python编程中&#xff0c;控制程序流程的结构非常重要。通过合理使用条件判断语句、循环结构和函数&#xff0c;可以让程序更加高效和可维护。此外&#xff0c;理解局部变量和全局变量的概念也是编写清晰代码的重要一步。本文将详细介绍Python中的控制结构和函数机制&#xf…

基于Hadoop的物品租赁系统的设计与实现-springboot+vue

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【人工智能机器学习基础篇】——深入详解监督学习之模型评估:掌握评估指标(准确率、精确率、召回率、F1分数等)和交叉验证技术

深入详解监督学习之模型评估 在监督学习中&#xff0c;模型评估是衡量模型性能的关键步骤。有效的模型评估不仅能帮助我们理解模型在训练数据上的表现&#xff0c;更重要的是评估其在未见数据上的泛化能力。本文将深入探讨监督学习中的模型评估方法&#xff0c;重点介绍评估指…

深入探索:使用Java爬虫获取亚马逊商品图片

在电商领域&#xff0c;商品图片是吸引消费者注意力的关键因素之一。对于市场研究人员、数据分析师和开发者来说&#xff0c;能够自动获取商品图片是一个宝贵的技能。本文将详细介绍如何使用Java编写爬虫程序&#xff0c;以获取亚马逊国际站点上按关键字搜索的商品图片。 1. 准…

关闭显示器的脚本

一、用BAT脚本关闭显示器 shutdown_monitor.bat %windir%\System32\scrnsave.scr /s 二、用BAT调PowerShell脚本关闭显示器 RunPowerShellScript.bat echo off powershell -NoProfile -ExecutionPolicy Bypass -File “TurnOffMonitor.ps1” pause TurnOffMonitor.ps1 …

Docker部署neo4j

查询镜像版本 docker search neo4j 以上代码运行会报异常&#xff1a;Error response from daemon: Get https://index.docker.io/v1/search?qneo4j&n25: read tcp 192.168.xxx.xxx:41734->xx.xxx.xx.xxx:443: read: connection reset by peer 这个提示无法访问&…

Vue.js组件开发-怎样将style私有化

Vue.js组件开发中&#xff0c;将style私有可以通过使用<style scoped>来实现的。scoped属性会告诉Vue为这个组件的CSS样式添加一个数据属性&#xff0c;从而确保这些样式只应用于该组件的元素&#xff0c;而不会影响到其他组件或全局样式。 示例&#xff1a; 展示如何使…

Effective C++ 条款39:明智而审慎地使用 private 继承

文章目录 条款39&#xff1a;明智而审慎地使用 private 继承示例 1&#xff1a;private 继承无隐式转换示例 2&#xff1a;private 继承 vs 复合示例 3&#xff1a;empty base 最优化 (EBO)适用场景总结 条款39&#xff1a;明智而审慎地使用 private 继承 private 继承 是一种…