JavaFX HBox

JavaFX API具有将UI控件显示到场景图上的布局类。
HBox布局类将JavaFX子节点放在水平行中。 新的子节点附加到右侧的末尾。默认情况下,HBox布局尊重子节点的首选宽度和高度。
当父节点不可调整大小时,例如Group节点,HBox的行高度设置为子节点的最大首选高度。

默认情况下,每个子节点与左上(Pos.TOP_LEFT)位置对齐。

我们可以通过编程方式改变HBox的布局约束,例如边框,填充,边距,间距和对齐

当处理不可缩放的子节点(如Shape节点)时,父节点会考虑Shape的矩形边界(ParentInBounds)的宽度和高度。

当处理诸如TextField控件之类可调整大小的节点时,父节点计算TextField水平增长的可用空间。

要在HBox中水平增长UI控件,请使用静态HBox.setHgrow()方法。

边框,填充,边距,间距和对齐

边框

边框样式:

1. border-style边框样式(hidden隐藏、none无边框、dotted电线、dashed虚线、soild实线、double两个边框、groove3D沟槽边框、ridge3D脊边框、inset3D嵌入边框、outset3D突出边框):可以单独设置一边的样式。

border-top-style、border-bottom-style、border-right-style、border-left-style。

缩写:

① border-style: 上 右 下 左;

②border-style: 上 左右 下;

③border-style: 上下 左右;

④border-style: 上下左右;

2. border-width边框宽度(5px、medium):可以单独设置一边的宽度。

border-top-width上边框、border-bottom-width下边框、border-right-width有边框、border-left-width左边框。

3. border-color边框颜色: 可以单独设置一边的颜色。

border-top-color、border-bottom-color、border-right-color、border-left-color

缩写:

①border: 5px solid red;

②border-top:5px solid red ;

③border-bottom:5px solid red ;

④border-right:5px solid red ;

⑤border-left:5px solid red ;

轮廓

轮廓样式:轮廓是在边框外面的一层,其用法同边框。

outline-style

outline-color

outline-width

缩写:outline:green dotted thick ;

边距

边距:(百分数、em、px)

margin-top

margin-bottom

margin-right

margin-left

缩写:margin: 上 右 下 左;

填充

填充:(百分数、em、px)

padding-top

padding-bottom

padding-left

padding-right

缩写:padding: 上 右 下 左;

尺寸

尺寸:(百分数、em、px)

包括height、width

height、max-height、min-height

width、max-width、min-width

HBox:每个子节点之间的水平间距


import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;public class JavaFx05 extends Application {@Overridepublic void start(Stage stage) throws Exception {//每个子节点之间的水平间距25HBox hbox = new HBox(25);Scene scene = new Scene(hbox, 300, 250);Button b1 = new Button("按钮1");Button b2 = new Button("按钮2");Button b3 = new Button("按钮3");hbox.getChildren().addAll(b1,b2,b3);stage.setScene(scene);stage.show();}public static void main(String[] args) {launch(args);}}

水平增长

以下代码将TextField控件设置为在调整父HBox的宽度时水平增长:

TextField  myTextField = new TextField();
HBox.setHgrow(myTextField,  Priority.ALWAYS);

请阅读下面的完整源代码。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.stage.Stage;public class Main extends Application {@Overridepublic void start(Stage stage) {TextField myTextField = new TextField();HBox hbox = new HBox();hbox.getChildren().add(myTextField);//设置之后父节点增长 也跟着增长HBox.setHgrow(myTextField, Priority.ALWAYS);Scene scene = new Scene(hbox, 320, 112, Color.rgb(0, 0, 0, 0));stage.setScene(scene);stage.show();}public static void main(String[] args) {launch(args);}
}

Insets 设置偏移量

以下代码向HBox添加了四个矩形,设置了HBox约束,并演示了HBox布局控件的许多间距属性。矩形节点不可调整大小。

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;public class Main extends Application {@Overridepublic void start(Stage stage) {Group root = new Group();Scene scene = new Scene(root, 300, 250);//HBox内部控件之间的间隔HBox hbox = new HBox(5);//new Insets(1):距离边框上下左右距离hbox.setPadding(new Insets(1));Rectangle r1 = new Rectangle(10, 10);Rectangle r2 = new Rectangle(20, 100);Rectangle r3 = new Rectangle(50, 20);Rectangle r4 = new Rectangle(20, 50);//构造一个具有四个不同偏移量的新 Insets 实例。 // @param top 上偏移 // @param right 右偏移 // @param bottom 下偏移 // @param left 左偏移HBox.setMargin(r1, new Insets(2, 2, 2, 2));hbox.getChildren().addAll(r1, r2, r3, r4);root.getChildren().add(hbox);stage.setScene(scene);stage.show();}public static void main(String[] args) {launch(args);}
}

在HBox中增长

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {Application.launch(args);}@Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("");Group root = new Group();Scene scene = new Scene(root, 300, 250, Color.WHITE);HBox hbox = new HBox();Button button1 = new Button("Add               ");Button button2 = new Button("Remove   ");HBox.setHgrow(button1, Priority.ALWAYS);HBox.setHgrow(button2, Priority.ALWAYS);button1.setMaxWidth(Double.MAX_VALUE);button2.setMaxWidth(Double.MAX_VALUE);hbox.getChildren().addAll(button1, button2);root.getChildren().add(hbox);primaryStage.setScene(scene);primaryStage.show();}
}

设置HBox宽度

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {Application.launch(args);}@Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("");Group root = new Group();Scene scene = new Scene(root, 300, 250, Color.WHITE);HBox hbox = new HBox();Button button1 = new Button("Add               ");Button button2 = new Button("Remove   ");HBox.setHgrow(button1, Priority.ALWAYS);HBox.setHgrow(button2, Priority.ALWAYS);button1.setMaxWidth(Double.MAX_VALUE);button2.setMaxWidth(Double.MAX_VALUE);hbox.getChildren().addAll(button1, button2);hbox.setPrefWidth(400);root.getChildren().add(hbox);primaryStage.setScene(scene);primaryStage.show();}
}

在HBox的控件之间设置空格(空间)

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {Application.launch(args);}@Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("");Group root = new Group();Scene scene = new Scene(root, 300, 250, Color.WHITE);//设置内部元素之间的空格HBox hbox = new HBox(8);// spaceButton button1 = new Button("Add               ");Button button2 = new Button("Remove   ");HBox.setHgrow(button1, Priority.ALWAYS);HBox.setHgrow(button2, Priority.ALWAYS);button1.setMaxWidth(Double.MAX_VALUE);button2.setMaxWidth(Double.MAX_VALUE);hbox.getChildren().addAll(button1, button2);hbox.setPrefWidth(400);root.getChildren().add(hbox);primaryStage.setScene(scene);primaryStage.show();}
}

HBox设置填充和间距

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;public class Main extends Application {public static void main(String[] args) {Application.launch(args);}@Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("HBox Test");// HBoxHBox hb = new HBox();//填充hb.setPadding(new Insets(150, 12, 15, 12));hb.setSpacing(10);// ButtonsButton btn1 = new Button();btn1.setText("Button1");hb.getChildren().add(btn1);Button btn2 = new Button();btn2.setText("Button2");hb.getChildren().add(btn2);Button btn3 = new Button();btn3.setText("Button3");hb.getChildren().add(btn3);Button btn4 = new Button();btn4.setText("Button4");hb.getChildren().add(btn4);// Adding HBox to the sceneScene scene = new Scene(hb);primaryStage.setScene(scene);primaryStage.show();}
}

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

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

相关文章

【工作】计算机行业相关的十六类工作简介

本文简单介绍了计算机行业相关的工作类别,共16种,包括常见招聘要求与平均工资。平均工资信息来源:米国企业点评职场社区glassdoor(https://www.glassdoor.com/index.htm) (一)软件工程师 软件…

图书馆图书可视化分析+大屏

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 目录 摘要前言技术栈开发环境数据说明 正文数据获取数据存储数据清理数据分析数据挖掘关联规则二分类预测 数据可视化书籍价格区间柱状图书籍评…

质疑标普,理解标普,加入标普

上周我在文章里提到过,标普信息科技LOF(161128)出现套利机会。每天申购卖出,到现在一个账户56*6336润。 得益于美股七巨头轮流领涨,161128依旧坚挺,每天溢价都是10%,成交量1个多亿,场内新增份额才400万份&…

路由器虚拟服务器有什么作用

现如今在IPv4时代,由于公网IP地址的匮乏,约有70%的电脑都处于内网中,上网需要通过路由器。如果反过来想要访问身处内网的电脑,我们就需要在路由器里开放相应的端口才能实现。而这开放端口的功能,在路由器里就叫做虚拟服…

NASA数据:南极海洋生物资源

Antarctic Marine Living Resources (AMLR) program 南极海洋生物资源许可证 南极海洋生物资源保护委员会公约区受到管制。任何打算从该区域捕获海洋生物的人都必须获得许可证。 简介 美国是南极海洋生物资源保护委员会(Commission for the Conservation of Anta…

JVM面试重点-2

16. 吞吐量优先和响应时间优先的回收器是哪些? 吞吐量优先:Parallel Scavenge Parallel Old(多线程并行)->简称: PSPO -> JDK1.8默认响应时间优先:ParNew CMS(并发回收垃圾&#xff09…

VMware 桥接网络突然无法上网

VMware 桥接网络突然无法上网 0. 问题1. 解决方法 0. 问题 昨天,VMware 桥接网络正常使用,今天突然无法上网。 1. 解决方法 打开VMware的虚拟网络编辑器,将桥接模式的网络从“自动”改成你要使用的网卡,问题解决。 完成&#…

通过命令行启动MySQL

通过命令行启动MySQL 右击,选择管理员运行 停止MySQL net stop你的服务名称 net stop MySQL启动MySQL net start你的服务名称 net start MySQL

ElasticSearch地理空间数据了解

ElasticSearch地理空间数据了解 使用场景 Elasticsearch 的地理空间数据处理功能在现代社会中有着广泛的应用,以下是一些常见的使用场景和方向: 1. 位置搜索和导航 本地服务发现:应用程序可以使用 Elasticsearch 查找用户附近的餐馆、商店…

【java分布式计算】分布式计算程序设计基础

期末复习 自留 重点只抓考点 目录 基本技术 SOCKETS网络套接字 多线程 数据序列化 Java I/O流 集合容器 范型 内部类、匿名类、Lambda(代码) 项目构建管理工具 高级技术 注解(代码) 反射(代码)…

C语言笔记第15篇:文件操作

1、为什么使用文件? 如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到上次程序的数据的,如果要将数据进行持久化…

【PL理论】(29) OOP:面向对象编程 | 案例研究:C++ 中的类 | 继承 | 继承和指针 | Object-oriented Programming

💭 写在前面:本章我们将进入 Object-oriented Programming,面向对象编程的讲解,探讨 C 中的类,继承等。 目录 0x00 面向对象编程 0x01 C语言中的结构体 0x02 案例研究:C 中的类 0x03 术语 0x04 继承&…

PHP调用阿里云OSS的SDK封装成服务的完整指南与问题解决

在现代Web开发中,使用云存储来管理和存储大量的静态文件已经成为常态。阿里云OSS(对象存储服务)是其中一个非常受欢迎的选择。在这篇文章中,我们将详细讲解如何在PHP项目中集成并使用阿里云OSS SDK。 #### 一、前期准备 在开始之…

vue3轮播图怎么做

先看效果 实现代码 <n-carouseleffect"card"dot-type"line"draggable:autoplay"!isHovered":current-index"currentIndex"prev-slide-style"transform: translateX(-150%) translateZ(-450px);opacity:1"next-slide-st…

【MySQL】(基础篇十三) —— 联结

联结 本文介绍什么是联结&#xff0c;为什么要使用联结&#xff0c;如何编写使用联结的SELECT语句。介绍如何对被联结的表使用表别名和聚集函数。 SQL最强大的功能之一就是能在数据检索查询的执行中联结&#xff08;join&#xff09;表。联结是利用SQL的SELECT能执行的最重要…

springboot+vue+mybatis教师工作审核系统+PPT+论文+讲解+售后

随着社会不断进步与发展&#xff0c;生活节奏不断加快&#xff0c;信息已经成为我们生活中不可缺少的一部分&#xff0c;很多学校需要掌握大量的信息来了解特定学生的需求&#xff0c;传统的做法是组织大量的人力物力对学生散发调查表&#xff0c;然后对收集的信息进行统计并得…

基于Matlab的BP神经网络的车牌识别系统(含GUI界面)【W7】

简介&#xff1a; 本系统结合了图像处理技术和机器学习方法&#xff08;BP神经网络&#xff09;&#xff0c;能够有效地实现车牌的自动识别。通过预处理、精确定位、字符分割和神经网络识别&#xff0c;系统能够准确地识别各种车牌图像&#xff0c;并在智能交通管理、安防监控等…

LeetCode 338.比特位计数

各位朋友们&#xff0c;大家好啊&#xff0c;今天此题我用的方法比较好理解&#xff0c;但时间复杂度比较高如果大家觉得可以的话&#xff0c;不妨给个免费的赞吧&#xff0c;谢谢了^ _ ^ 1.题目要求如图所示: 2.做题步骤: 1.先计算总共多少个数: int count 0;int number 0;…

25 avl树

目录 底层结构avl树的概念节点定义插入旋转验证删除全性能 1. 底层结构 前面对map/multimap/set/multiset进行了简单的介绍&#xff0c;在其文档介绍中发现&#xff0c;这几个容器有几个共同点是&#xff1a;其底层都是按照二叉搜索树来实现的&#xff0c;但是二叉搜索树有自…

用Copilot画漫画,Luma AI生成视频:解锁创意新玩法

近年来&#xff0c;随着人工智能技术的不断发展&#xff0c;各种创意工具也层出不穷。今天&#xff0c;我们就来介绍一种全新的创作方式&#xff1a;使用Copilot画漫画&#xff0c;再将漫画放入Luma AI生成视频。 Copilot&#xff1a;你的AI绘画助手 Copilot是一款基于人工智…