JavaFX布局-BorderPane

news2024/12/28 8:34:28

JavaFX布局-BorderPane

  • 实现方式
    • Java实现
    • FXML实现
  • 综合案例

  • 将容器空间分成五个区域:顶部(Top)、底部(Bottom)、左侧(Left)、右侧(Right)和中心(Center)。每个区域都可以放置一个节点(Node),比如另一个布局容器或UI控件
  • BorderPane中的一些区域可以为空,只设置需要的区域即可
  • 顶部和底部默认是横向扩展全宽的
  • 左右两侧则会扩展到足够容纳内容的高度
  • 中心区域通常用来放置主要的内容,默认会填充剩余的空间
    在这里插入图片描述

实现方式

Java实现

BorderPane pane = new BorderPane();
pane.setTop(new Label("top"));
pane.setCenter(new Label("center"));
pane.setBottom(new Label("bottom"));
pane.setLeft(new Label("left"));
pane.setRight(new Label("right"));
pane.setPadding(new Insets(5, 10, 10, 5));

FXML实现

<BorderPane xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" prefHeight="400.0" prefWidth="600.0">
    <top>
        <Button text="top"/>
    </top>
    <center>
        <Button text="center"/>
    </center>
    <bottom>
        <Button text="bottom"/>
    </bottom>
    <left>
        <Button text="left"/>
    </left>
    <right>
        <Button text="right"/>
    </right>
</BorderPane>

综合案例

BorderPane pane = new BorderPane();
        // top
        MenuBar menuBar = new MenuBar();
        menuBar.setStyle("-fx-background-color: pink;");
        Menu file = new Menu("文件");
        file.getItems().add(new Menu("新建"));
        file.getItems().add(new Menu("打开"));
        menuBar.getMenus().add(file);
        menuBar.getMenus().add(new Menu("编辑"));
        pane.setTop(menuBar);

        // center
        TabPane tabPane = new TabPane();
        tabPane.setStyle("-fx-background-color: blue;");
        Tab tab1 = new Tab("Untitled Tab 1");
        tab1.setContent(new FlowPane());
        tabPane.getTabs().add(tab1);
        Tab tab2 = new Tab("Untitled Tab 2");
        tab2.setContent(new FlowPane());
        tabPane.getTabs().add(tab2);
        pane.setCenter(tabPane);

        // bottom
        FlowPane flowPaneBottom = new FlowPane();
        flowPaneBottom.setStyle("-fx-background-color: red;");
        flowPaneBottom.setAlignment(Pos.CENTER);
        flowPaneBottom.getChildren().add(new Label("底部数据"));
        pane.setBottom(flowPaneBottom);

        // left
        TreeItem<String> root = new TreeItem<String>("root");
        root.getChildren().add(new TreeItem<String>("一级目录"));
        root.getChildren().add(new TreeItem<String>("二级目录"));
        root.getChildren().add(new TreeItem<String>("三级目录"));
        TreeView<String> treeView = new TreeView<String>(root);
        treeView.setPrefWidth(100);
        pane.setLeft(treeView);

        // right
        FlowPane flowPaneRight = new FlowPane();
        flowPaneRight.setStyle("-fx-background-color: green;");
        flowPaneRight.setOrientation(Orientation.VERTICAL);
        flowPaneRight.setAlignment(Pos.CENTER);
        flowPaneRight.getChildren().add(new Button("操作1"));
        flowPaneRight.getChildren().add(new Button("操作2"));
        flowPaneRight.getChildren().add(new Button("操作3"));
        flowPaneRight.getChildren().add(new Button("操作4"));
        flowPaneRight.getChildren().add(new Button("操作5"));
        pane.setRight(flowPaneRight);
        return pane;

在这里插入图片描述

<BorderPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17.0.2-ea"  xmlns:fx="http://javafx.com/fxml/1" >
    <top>
        <MenuBar style="-fx-background-color: pink;">
            <Menu styleClass="menu-item" text="文件">
                <Menu text="新建"/>
                <Menu text="打开"/>
            </Menu>
            <Menu text="编辑"/>
        </MenuBar>
    </top>
    <center>
        <TabPane fx:id="tabPane1" prefHeight="200.0" prefWidth="200.0" styleClass="tab-pane" style="-fx-background-color: blue;"
                 tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
            <tabs>
                <Tab fx:id="tab1" text="Untitled Tab 1">
                    <content>
                        <FlowPane fx:id="flowPane1" minHeight="0.0" minWidth="0.0" prefHeight="180.0"
                                  prefWidth="200.0"/>
                    </content>
                </Tab>
                <Tab fx:id="tab2" text="Untitled Tab 2">
                    <content>
                        <FlowPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                            <Button styleClass="btn btn-primary" text="添加Button"/>
                            <Button styleClass="btn btn-primary" text="添加Tab"/>
                        </FlowPane>
                    </content>
                </Tab>
            </tabs>
        </TabPane>
    </center>
    <left>
        <TreeView prefWidth="100" >
            <TreeItem value="root">
                <children>
                    <TreeItem value="一级目录"/>
                    <TreeItem value="二级目录"/>
                    <TreeItem value="三级目录"/>
                </children>
            </TreeItem>
        </TreeView>
    </left>
    <right>
        <FlowPane alignment="CENTER" orientation="VERTICAL" prefWidth="60" style="-fx-background-color: green;">
            <Button text="操作1"/>
            <Button text="操作2"/>
            <Button text="操作3"/>
            <Button text="操作4"/>
        </FlowPane>
    </right>
    <bottom>
        <FlowPane alignment="CENTER" prefHeight="50" style="-fx-background-color: red;" BorderPane.alignment="CENTER">
            <Label text="底部数据"/>
            <BorderPane.margin>
                <Insets top="5.0" left="0" right="0" bottom="5"/>
            </BorderPane.margin>
        </FlowPane>
    </bottom>
</BorderPane>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1884047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

专题六:Spring源码之初始化容器BeanFactory

上一篇咱们通过一个例子介绍初始化容器上下文相关内容&#xff0c;并通过两个示例代码看到了Spring在设计阶段为我预留的扩展点&#xff0c;和我们应该如何利用这两个扩展点在Spring初始化容器上下文阶段为我们提供服务。这一篇咱们接着往下看。 老这样子下回到refresh方法上来…

OFDM关键技术——同步技术

同一符号内各子载波受到不同的相位偏转及幅度衰减&#xff0c; k 越大偏差越大&#xff1b;相位偏转与子载波序号 k 和符号序号 i 均有关&#xff0c;序号越大&#xff0c;相位偏转越大&#xff1b;引入了 ICI &#xff0c;系统信噪比降低&#xff1b;当采样偏差效果累积到一定…

苍穹外卖项目 常用注解 + 动态sql

常用注解 常见的注解解析方法有两种&#xff1a; 编译期直接扫描&#xff1a;编译器在编译 Java 代码的时候扫描对应的注解并处理&#xff0c;比如某个方法使用Override 注解&#xff0c;编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。运行期通过反射处理&…

CesiumJS【Basic】- #038 绘制轮廓线(Primitive方式)

文章目录 绘制轮廓线(Primitive方式)1 目标2 代码2.1 main.ts绘制轮廓线(Primitive方式) 1 目标 使用Primitive方式绘制轮廓线 2 代码 2.1 main.ts var start = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);v

设备通信-MODBUS协议和485接口

因水表远程监控和水泵数据监控系统&#xff0c;需了解物联网开发协议。 通信协议 通信协议说白了就是一种语言&#xff0c;一种通信双方都能听的懂得语言。 设备常用的通信协议有MODBUS RTU&#xff0c;PPI,MPI等&#xff0c;通信协议和我们常用的语言只是叫法不一样&#x…

预约小程序源码,云开发技术,无需服务器

介绍&#xff1a; 很多企业的业务都需要通过服务预约来完成&#xff0c;比如酒店、美容、家政等等。 但很多商家因缺少合适的服务预订工具&#xff0c;而不知道如何让客户尽快预约。 这种情况下&#xff0c;制作一个自己的预约小程序&#xff0c;客户只需要扫码或者在微信里…

8605 删数问题

这是一个典型的贪心算法问题。我们可以从高位开始&#xff0c;找到第一个比后面数字大的数字&#xff0c;删除它&#xff0c;然后继续这个过程&#xff0c;直到删除k个数字。如果我们已经删除了k个数字&#xff0c;但是还没有找到一个比后面数字大的数字&#xff0c;那么我们就…

51-1 内网信息收集 - 内网资源探测

导语 在内网渗透过程中,通常需要利用各种技术来探测内网资源,为后续的横向渗透做准备。发现内网存活的主机及其详细信息可以帮助确定攻击方向和潜在的漏洞。 一、基于 ICMP 发现存活主机 ICMP(Internet Control Message Protocol,因特网控制消息协议)是 TCP/IP 协议簇的…

Vue2动态代理,换服务无须重启项目

1、痛点 当我们需要使用不同的服务器时&#xff0c;就需要手动修改vue.config.js中配置并重新启动项目。当项目越来越大时&#xff0c;会需要较长的时间来等待项目启动&#xff0c;如此反复&#xff0c;极大影响我们开发进度。 2、寻求解决方案 vue-cli 的代理是使用的http-p…

详解归一化、标准化、正则化以及batch normalization

文章目录 what(是什么)where&#xff08;用在哪&#xff09;How&#xff08;如何用&&原理&#xff09;归一化实现方式原理示例说明 标准化实现方式原理示例说明 正则化实现方式原理作用 Batch Normalizationpytorch中的batch normalization原理BN的作用 归一化、标准化…

Python 文件操作

文件编码 将文件的内容翻译为二进制 文件操作 打开文件 open函数 语法&#xff1a; open(name, mode, encoding)name&#xff1a;文件名的字符串&#xff0c;可以包含具体路径。若没有路径&#xff0c;则默认为与py文件位于同一层 mode&#xff1a;打开文件的模式&#xf…

tkinter实现进度条

tkinter实现进度条 效果代码解析导入需要的模块定义进度条 代码 效果 代码解析 导入需要的模块 import tkinter as tk from tkinter import ttk定义进度条 def start_progress():progress[value] 0max_value 100step 10for i in range(0, max_value, step):progress[valu…

职场新宠“禁止蕉绿”:解压新方式,健康新态度

近期&#xff0c;一种名为“禁止蕉绿”的带杆香蕉在职场人群中悄然走红&#xff0c;成为他们工位上的新宠。这一现象源于“蕉绿”与“焦虑”的谐音&#xff0c;寓意着职场人对远离焦虑、追求心理放松的渴望。在社交平台上&#xff0c;种植水培果蔬如香蕉、菠萝等已成为职场话题…

一文带您了解Fiddler的家族产品:Fiddler Classic、FiddlerCore、Fiddler和Cap、Fiddler Jam

最近更新了一下Fiddler&#xff08;好久没更新了&#xff09;&#xff0c;然后浏览了一下官方网站&#xff0c;发现fillder的变化还是蛮大的&#xff0c;新出了好多产品&#xff0c;在这里我就把这些产品进行汇总比较&#xff0c;便于大家快速了解&#xff0c;快速选择自己需要…

为什么网络爬虫广泛使用HTTP代理?

一、引言 网络爬虫作为自动抓取互联网信息的重要工具&#xff0c;在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂&#xff0c;网站反爬虫技术的不断进步&#xff0c;网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战&#xff0c;HTTP 代理成…

复制 pdf 的表格到 markdown 版本的Typora 或者 word 中

在 pdf 中选中复制表格内容&#xff0c;直接粘贴到 typora 中失败&#xff0c;可以使用 txt文件和 excel 做过渡。 准备一个空的 txt 文件&#xff0c;将 pdf 中表格的数据复制粘贴到txt文件中&#xff0c;文本内容会以空格分开&#xff0c;如下图的形式&#xff1a; 打开 exc…

【Excel、RStudio计算T检测的具体操作步骤】

目录 一、基础知识1.1 显著性检验1.2 等方差T检验、异方差T检验1.3 单尾p、双尾p1.3.1 检验目的不同1.3.2 用法不同1.3.3 如何选择 二、Excel2.1 统计分析工具2.1.1 添加统计分析工具2.1.2 数据分析 2.2 公式 -> 插入函数 -> T.TEST 三、RStudio 一、基础知识 参考: 1.…

Spring底层原理之bean的加载方式四 @import 注解

bean的加载方式四 import 第四种bean的导入方式 是import导入的方式 在配置类上面加上注解就行 package com.bigdata1421.config;import com.bigdata1421.bean.Dog; import org.springframework.context.annotation.Import;Import(Dog.class) public class SpringConfig4 {…

直播的js代码debug解析找到protobuf消息的定义

我们都知道直播的弹幕消息是通过websocket发送的&#xff0c;而且是通过protobuf传输的&#xff0c;那么这里面传输了哪些内容&#xff0c;这个proto文件又要怎么定义&#xff1f;每个消息叫什么&#xff0c;消息里面又包含有哪些字段&#xff0c;每个字段又是什么类型&#xf…

1-3.文本数据建模流程范例

文章最前&#xff1a; 我是Octopus&#xff0c;这个名字来源于我的中文名–章鱼&#xff1b;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github &#xff1b;这博客是记录我学习的点点滴滴&#xff0c;如果您对 Python、Java、AI、算法有兴趣&#xff0c;可以关注我的…