JavaFX UI控件教程(十六)之Separator

翻译自  Separator

本章介绍如何使用分隔符组织JavaFX应用程序的UI组件。

SeparatorJavaFX API中可用的类表示水平或垂直分隔线。它用于划分应用程序用户界面的元素,不会产生任何操作。但是,您可以设置样式,对其应用视觉效果,甚至为其设置动画。默认情况下,分隔符是水平的。您可以使用该setOrientation方法更改其方向。

创建分隔符

例15-1中的代码片段创建了一个水平分隔符和一个垂直分隔符。

例15-1垂直和水平分隔符

//Horizontal separator
Separator separator1 = new Separator();
//Vertical separator
Separator separator2 = new Separator();
separator2.setOrientation(Orientation.VERTICAL);

Separator班是的扩展Node类。因此,分隔符继承Node该类的所有实例变量。

通常,分隔符用于划分UI控件的组。研究例15-2中所示的代码片段。它将弹簧月复选框与夏月复选框分开。

示例15-2在复选框类别之间使用分隔符

final String[] names = new String[]{"March", "April", "May","June", "July", "August"};
final CheckBox[] cbs = new CheckBox[names.length];
final Separator separator = new Separator();
final VBox vbox = new VBox();for (int i = 0; i < names.length; i++) {cbs[i] = new CheckBox(names[i]);
}separator.setMaxWidth(40);
separator.setAlignment(Pos.CENTER_LEFT);
vbox.getChildren().addAll(cbs);
vbox.setSpacing(5);
vbox.getChildren().add(3, separator);

将此代码片段添加到应用程序时,会生成如图15-1所示的控件。

图15-1复选框和分隔符

分隔符占用分配给它的完整水平或垂直空间。该setMaxWidth方法用于定义特定宽度。该setValignment方法指定分隔符在分配的布局空间内的垂直位置。同样,您可以通过应用setHalignment方法设置分隔线的水平位置。

在例15-2中,通过使用专用方法将分隔符添加到垂直框中add(index, node)。您可以在应用程序中使用此方法在创建UI之后或动态更改UI时包含分隔符。

 

将分隔符添加到应用程序的UI中

如前所述,分隔符可用于划分UI控件组。您还可以使用它们来构建用户界面。考虑渲染天气预报数据的任务,如图15-2所示。

图15-2使用分隔符构建天气预报数据

对于图15-2中所示的应用程序,分隔符用于划分LabelImageView对象。研究例15-3中所示的该应用程序的源代码。

示例15-3在天气预报应用程序中使用分隔符

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.geometry.VPos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;public class Main extends Application {Label caption = new Label("Weather Forecast");Label friday = new Label("Friday");Label saturday = new Label("Saturday");Label sunday = new Label("Sunday");@Overridepublic void start(Stage stage) {Group root = new Group();Scene scene = new Scene(root, 500, 300);stage.setScene(scene);stage.setTitle("Separator Sample");GridPane grid = new GridPane();grid.setPadding(new Insets(10, 10, 10, 10));grid.setVgap(2);grid.setHgap(5);scene.setRoot(grid);Image cloudImage = new Image(getClass().getResourceAsStream("cloud.jpg"));Image sunImage = new Image(getClass().getResourceAsStream("sun.jpg"));caption.setFont(Font.font("Verdana", 20));GridPane.setConstraints(caption, 0, 0);GridPane.setColumnSpan(caption, 8);grid.getChildren().add(caption);final Separator sepHor = new Separator();sepHor.setValignment(VPos.CENTER);GridPane.setConstraints(sepHor, 0, 1);GridPane.setColumnSpan(sepHor, 7);grid.getChildren().add(sepHor);friday.setFont(Font.font("Verdana", 18));GridPane.setConstraints(friday, 0, 2);GridPane.setColumnSpan(friday, 2);grid.getChildren().add(friday);final Separator sepVert1 = new Separator();sepVert1.setOrientation(Orientation.VERTICAL);sepVert1.setValignment(VPos.CENTER);sepVert1.setPrefHeight(80);GridPane.setConstraints(sepVert1, 2, 2);GridPane.setRowSpan(sepVert1, 2);grid.getChildren().add(sepVert1);saturday.setFont(Font.font("Verdana", 18));GridPane.setConstraints(saturday, 3, 2);GridPane.setColumnSpan(saturday, 2);grid.getChildren().add(saturday);final Separator sepVert2 = new Separator();sepVert2.setOrientation(Orientation.VERTICAL);sepVert2.setValignment(VPos.CENTER);sepVert2.setPrefHeight(80);GridPane.setConstraints(sepVert2, 5, 2);GridPane.setRowSpan(sepVert2, 2);grid.getChildren().add(sepVert2);sunday.setFont(Font.font("Verdana", 18));GridPane.setConstraints(sunday, 6, 2);GridPane.setColumnSpan(sunday, 2);grid.getChildren().add(sunday);final ImageView cloud = new ImageView(cloudImage);GridPane.setConstraints(cloud, 0, 3);grid.getChildren().add(cloud);final Label t1 = new Label("16");t1.setFont(Font.font("Verdana", 20));GridPane.setConstraints(t1, 1, 3);grid.getChildren().add(t1);final ImageView sun1 = new ImageView(sunImage);GridPane.setConstraints(sun1, 3, 3);grid.getChildren().add(sun1);final Label t2 = new Label("18");t2.setFont(Font.font("Verdana", 20));GridPane.setConstraints(t2, 4, 3);grid.getChildren().add(t2);final ImageView sun2 = new ImageView(sunImage);GridPane.setConstraints(sun2, 6, 3);grid.getChildren().add(sun2);final Label t3 = new Label("20");t3.setFont(Font.font("Verdana", 20));GridPane.setConstraints(t3, 7, 3);grid.getChildren().add(t3);stage.show();}public static void main(String[] args) {launch(args);}
}

此应用程序使用水平和垂直分隔符,并使分隔符跨越GridPane容器中的行和列。在您的应用程序中,您还可以设置分隔符的首选长度(水平分隔符的宽度和垂直分隔符的高度),以便在用户界面调整大小时动态更改。您还可以通过应用可用于Separator对象的CSS类来更改分隔符的可视外观。

 

造型分隔符

若要将相同的样式应用于示例15-3中的所有分隔符,请创建CSS文件(例如,controlStyle.css)并将此文件保存在与应用程序的主类相同的包中。例15-4演示了可以添加到controlStyle文件的CSS类。

示例15-4使用CSS类来设置样式分隔符

/*controlStyle.css */.separator{-fx-background-color: #e79423;-fx-background-radius: 2;
}

您可以通过类的getStylesheets方法在应用程序中启用分隔符样式Scene,如例15-5所示。

示例15-5在JavaFX应用程序中启用样式表

scene.getStylesheets().add("separatorsample/controlStyle.css");

图15-3显示了编译和运行修改后的应用程序时天气预报中的分隔符的外观。

图15-3样式分隔符

 

相关的API文档 

  • Separator

  • JavaFX CSS规范

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

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

相关文章

eclipse下载与安装步骤详解,包含解决错误(最全最详细,多图)

以前一直用的是myeclipse,今天有幸接触eclipse,那我们就先来安装的配置一下&#xff0c;下载地址&#xff1a;公众号中回复常用软件下载&#xff0c;下载完成以后就可以安装了&#xff0c;首先我们来先安装jdk1.7,打开jdk的安装包双击即可&#xff0c;直接点击下一步&#xff1…

微软中国Azure开源开发者(深圳)研讨会

时间&#xff1a;2017年6月28日 地点&#xff1a;深圳福田香格里拉大酒店 微软开发技术与云平台自从迈向开放、开源、跨平台的转型以来&#xff0c;已经受到全球开源社区们的关注。从Github 上高居世界首位的开源项目贡献数量&#xff0c;可以看到微软贯彻开源战略的实际行动。…

JavaFX UI控件教程(十七)之Slider

翻译自 Slider 在本章中&#xff0c;您将学习如何在JavaFX应用程序中使用滑块来显示和与一系列数值进行交互。 该Slider控件由一个轨道和一个可拖动的拇指组成。它还可以包括刻度线和刻度标签&#xff0c;用于指示范围的数值。图16-1显示了一个典型的滑块并指出了它的主要元…

Photoshop中将图片拖不进软件的编辑区的解决方法,超详细

今天在学习ps的过程中&#xff0c;发现我的ps怎么和人家老师的不一样&#xff0c;怎么不一样呢&#xff1f;人家老师的ps5中&#xff0c;鼠标可以直接拖到ps的编辑栏中&#xff0c;可是我的死活拖不进去。怎么办&#xff1f;怎么办&#xff1f;经过自己瞎鼓捣和上网查&#xff…

IdentityServer4 指定角色授权(Authorize(Roles=amp;quot;adminamp;quot;))

1. 业务场景 IdentityServer4 授权配置Client中的AllowedScopes&#xff0c;设置的是具体的 API 站点名字&#xff0c;也就是使用方设置的ApiName&#xff0c;示例代码&#xff1a; //授权中心配置new Client{ ClientId "client_id_1", AllowedGrantTypes G…

JavaFX UI控件教程(十八)之Progress Bar和Progress Indicator

翻译自 Progress Bar and Progress Indicator 在本章中&#xff0c;您将了解进度指示器和进度条&#xff0c;以及可视化JavaFX应用程序中任何操作进度的UI控件。 本ProgressIndicator类及其直接子类ProgressBar所提供的功能&#xff0c;以表明特定的任务是处理和检测是如何工…

你不知道ADo.Net中操作数据库的步骤【超详细整理】

1.先创建数据库连接字符串&#xff1a; string strcon "Data Source.;Initial CatalogschoolDB;Integrated SecurityTrue";2.创建SqlConnection对象&#xff0c;需要注意的是SqlConnection对象在using System.Data.SqlClient;命名空间中。 SqlConnection conn new…

C# 7.2和8.0路线图

C# 7.2和8.0的许多新功能已经列入了计划&#xff0c;其中包括空引用类型和有限形式的多重继承。 只读引用和只读结构体 [7.2原型] 首先提到的是只读引用和结构体。简单来讲&#xff0c;这项特性使得C#能够使用类似const的参数来提高性能。像我们所知道的“ref只读参数”和简单…

MyBatis中的原理

01Mybatis的运行原理 运行过程中涉及到的类 1.1 Resources MyBatis中IO流的工具类 1.1 加载配置文件 1.2 SqlSessionFactoryBuilder() 构建器 1.2.1 作用:创建SqlSessionFactory接口的实现类 1.3 XMLConfigBuilder MyBatis全局配置文件内容构建器类 1.3.1 作用负责读取流内容并…

JavaFX UI控件教程(十九)之Hyperlink

翻译自 Hyperlink 本章介绍Hyperlink用于将文本格式化为超链接的控件。 所述Hyperlink类表示另一种类型的Labeled控制。图18-1演示了默认超链接实现的三种状态。 图18-1超链接控制的三种状态 创建超链接 示例18-1中显示了生成超链接的代码片段。 例18-1典型的超链接 Hype…

杨辉三角形

package com.wdl.day07;/*** 创建人 wdl* 创建时间 2021/8/8* 描述*/ public class YangHuiTest {public static void main(String[] args) {int[][] yanghui new int[10][];for (int i 0; i < yanghui.length; i) {yanghui[i] new int[i 1];yanghui[i][0] 1;yanghui[i…

致我们最最最最最最最最最最最最最优秀的班主任——王老师

今天不说java&#xff0c;也不表C#&#xff0c;只来叙叙我们最最最最最最最最最最最最最优秀的班主任————王老师。亲爱的王老师&#xff0c;一起为3班孩子们的学业共同努力而使我倍感荣幸。回想从我们班报道以来&#xff0c;大大小小的各种奖状铺满那墨绿黑板的右侧&#x…

Asp.Net Core 发布到IIS

一、Asp.Net Core 发布到IIS 1.许多时候在WindowsServer服务器上已经安装了IIS&#xff0c;监听80端口&#xff0c;那么Asp.Net Core应用的自宿主就没法监听80端口 2.也就是在Widnows系统已经启用IIS服务的情况下&#xff0c;需要安装 NET Core Windows Server Hosting&#…

JavaFX UI控件教程(二十)之HTML Editor

翻译自 HTML Editor 在本章中&#xff0c;您将学习如何使用嵌入式HTML编辑器编辑JavaFX应用程序中的文本。 该HTMLEditor控件是一个功能齐全的富文本编辑器。它的实现基于HTML5的文档编辑功能&#xff0c;包括以下编辑功能&#xff1a; 文本格式包括粗体&#xff0c;斜体&am…

使用layui弹框实现添加时,当添加成功之后如何进行关闭当前窗口刷新父页面的数据

一看标题可能大家都比较模糊&#xff0c;我就去特意做了一个gif的演示图&#xff0c;结果发现太小了&#xff0c;就改成了现在的视频&#xff0c;视频地址&#xff1a; 使用layui实现对数据的增删改查演示案例实现技术是&#xff1a;ssh框架layui表格&#xff0c;即简单的对单表…

IdentityServer4 SigningCredential(RSA 证书加密)

IdentityServer4 默认提供了两种证书加密配置&#xff1a; services.AddIdentityServer().AddDeveloperSigningCredential().AddTemporarySigningCredential(); 这两种证书加密方式&#xff0c;都是临时使用&#xff0c;每次重启项目的时候&#xff0c;都会重新生成一个新的证…

JavaFX UI控件教程(二十一)之Tooltip

翻译自 Tooltip 在本章中&#xff0c;您将了解工具提示&#xff0c;即当鼠标光标悬停该控件时&#xff0c;可以为任何UI控件设置的控件。 的Tooltip类表示通常用于显示关于所述用户接口的控制附加信息的公共UI组件。可以通过调用setTooltip方法在任何控件上设置工具提示。 …

layui如何实现添加数据时关闭页面层,并实时刷新表格数据?

可能看到标题的你没有明白我到底想表达啥&#xff1f;&#xff08;我起名字时删改多遍&#xff0c;这是最终定下来的&#xff09;&#xff0c;不过&#xff0c;为了让大家看的明白&#xff0c;我专门去做了个演示视频&#xff1a;演示案例使用的技术&#xff1a;ssh框架layui表…

.net core 集成 autofac

1. Install Install-Package AutofacInstall-Package Autofac.Extensions.DependencyInjection 2.Startup 2.1 增加成員 public IContainer ApplicationContainer { get; private set; } 2.2 Startup.ConfigureServices 返回值改為&#xff1a;IServiceProvider 末尾中增…

JavaFX UI控件教程(二十三)之Menu

翻译自 Menu 本章介绍如何创建菜单和菜单栏&#xff0c;添加菜单项&#xff0c;将菜单分组&#xff0c;创建子菜单以及设置上下文菜单。 您可以使用以下JavaFX API类在JavaFX应用程序中构建菜单。 菜单栏 菜单项 菜单 CheckMenuItem RadioMenuItem 菜单 CustomMenuItem…