JavaFX官方教程(五)之在JavaFX中创建表单

翻译自  在JavaFX中创建表单

在开发应用程序时,创建表单是一项常见活动。本教程将向您介绍屏幕布局的基础知识,如何将控件添加到布局窗格以及如何创建输入事件。

在本教程中,您将使用JavaFX构建如图4-1所示的登录表单。

图4-1登录表单


 

本入门教程中使用的工具是NetBeans IDE。在开始之前,请确保您使用的NetBeans IDE版本支持JavaFX 8.有关详细信息,请参阅Java SE下载页面的Certified System Configurations页面。

 

1、创建项目

您的第一个任务是在NetBeans IDE中创建JavaFX项目并将其命名为Login:

  1. 从“ 文件”菜单中,选择“ 新建项目”

  2. JavaFX应用程序类别中,选择JavaFX Application。单击下一步

  3. 将项目命名为Login,然后单击Finish

    创建JavaFX项目时,NetBeans IDE提供了一个Hello World应用程序作为起点,如果您遵循Hello World教程,则已经看到了该应用程序。

  4. 删除start()NetBeans IDE生成的方法,并将其替换为示例4-1中的代码。

    例4-1应用阶段

        @Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("JavaFX Welcome");primaryStage.show();}

提示:将示例代码添加到NetBeans项目后,按Ctrl(或Cmd)+ Shift + I导入所需的包。如果可以选择import语句,请选择以开头语句开头的语句javafx

 

2、创建GridPane布局

对于登录表单,请使用GridPane布局,因为它使您能够创建灵活的行和列网格,以在其中布置控件。您可以将控件放在网格中的任何单元格中,并且可以根据需要使控件跨越单元格。

创建GridPane布局的代码在例4-2中。在行之前添加代码primaryStage.show();

示例4-2具有间隙和填充属性的GridPane

GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);

例4-2创建了一个GridPane对象并将其分配给名为的变量grid。alignment属性将网格的默认位置从场景的左上角更改为中心。gap属性管理行和列之间的间距,而padding属性管理网格窗格边缘周围的空间。插图按照顶部,右侧,底部和左侧的顺序排列。在此示例中,25每侧都有填充像素。

使用网格窗格作为根节点创建场景,这是使用布局容器时的常见做法。因此,在调整窗口大小时,根据布局约束调整网格窗格内的节点的大小。在此示例中,当您增大或缩小窗口时,网格窗格将保留在中心。填充属性确保在使窗口变小时网格窗格周围有填充。

此代码将场景宽度和高度设置为300乘以275.如果未设置场景尺寸,则场景默认为显示其内容所需的最小尺寸。

 

3、添加文本,标签和文本字段

查看图4-1,您可以看到表单需要标题“欢迎”以及用于从用户收集信息的文本和密码字段。创建这些控件的代码在例4-3中。在设置网格填充属性的行之后添加此代码。

例4-3控件

Text scenetitle = new Text("Welcome");
scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
grid.add(scenetitle, 0, 0, 2, 1);Label userName = new Label("User Name:");
grid.add(userName, 0, 1);TextField userTextField = new TextField();
grid.add(userTextField, 1, 1);Label pw = new Label("Password:");
grid.add(pw, 0, 2);PasswordField pwBox = new PasswordField();
grid.add(pwBox, 1, 2);

第一行创建一个Text无法编辑的对象,将文本设置为Welcome,并将其分配给名为的变量scenetitle。下一行使用该setFont()方法设置scenetitle变量的字体系列,重量和大小。在样式绑定到变量的情况下使用内联样式是合适的,但是使用样式表更好地设置用户界面元素的样式。在下一个教程中,使用JavaFX CSS的Fancy Forms,您将使用样式表替换内联样式。

grid.add()方法将scenetitle变量添加到布局中grid。网格中列和行的编号从零开始,并scenetitle在第0列第0行中添加。grid.add()方法的最后两个参数将列span设置为2,将行span设置为1。

下一行创建一个Label对象,其中包含第User Name0列,第1行的文本以及Text Field可以编辑的对象。文本字段将添加到第1列第1行的网格窗格中。将创建密码字段和标签,并以类似的方式将其添加到网格窗格中。

使用网格窗格时,可以显示网格线,这对于调试非常有用。在这种情况下,您可以grid.setGridLinesVisible(true)在添加密码字段的行之后添加。然后,当您运行应用程序时,您会看到网格列和行的行以及间隙属性,如图4-2所示。

图4-2带网格线的登录表单

 

4、添加按钮和文本

应用程序所需的最后两个控件是Button用于提交数据的Text控件和用于在用户按下按钮时显示消息的控件。

首先,创建按钮并将其放在右下角,这是执行影响整个表单的操作的按钮的常见位置。代码在例4-4中。在场景代码之前添加此代码。

例4-4按钮

Button btn = new Button("Sign in");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(btn);
grid.add(hbBtn, 1, 4);

第一行创建一个以btn标签命名的按钮Sign in,,第二行创建一个HBox以像素hbBtn间距命名的布局窗格10。该HBox窗格设置按钮的对齐方式,该对齐方式与应用于网格窗格中其他控件的对齐方式不同。该alignment属性的值为Pos.BOTTOM_RIGHT,该节点在空间的底部垂直地和在该空间的右边缘水平地定位节点。该按钮被添加为HBox窗格的子项,HBox窗格将添加到第1列第4行的网格中。

现在,添加一个Text用于显示消息的控件,如例4-5所示。在场景代码之前添加此代码。

例4-5文字

final Text actiontarget = new Text();
grid.add(actiontarget, 1, 6);

图4-3现在显示了表单。在完成教程的下一部分“ 添加代码以处理事件”之前,您不会看到文本消息。

图4-3带按钮的登录表单

 

5、添加代码来处理事件

最后,当用户按下按钮时,使按钮显示文本消息。在场景代码之前添加示例4-6中的代码。

例4-6按钮事件

btn.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent e) {actiontarget.setFill(Color.FIREBRICK);actiontarget.setText("Sign in button pressed");}
});

setOnAction()方法用于注册事件处理程序,该事件处理程序将actiontarget对象设置Sign in button pressed为用户按下按钮时。actiontarget对象的颜色设置为耐火砖红色。

 

6、运行应用程序

在“项目”窗口中右键单击“ 登录”项目节点,选择“运行”,然后单击“登录”按钮。图4-4显示了结果。如果遇到问题,请查看可Login.java下载的Login.zip文件中包含的文件中的代码。

图4-4最终登录表单

 

7、从这往哪儿走

基本表单教程到此结束,但您可以继续阅读以下有关开发JavaFX应用程序的教程。

  • 使用JavaFX CSS的Fancy Forms提供了有关如何添加背景图像以及从根本上更改登录表单中文本,标签和按钮样式的提示。

  • 使用FXML创建用户界面显示了创建登录用户界面的另一种方法。FXML是一种基于XML的语言,它提供了构建与代码的应用程序逻辑分开的用户界面的结构。

  • 在JavaFX中使用Layouts解释了内置的JavaFX布局窗格,以及使用它们的提示和技巧。

还可以试用JavaFX示例,您可以从Java SE下载页面的JDK演示和示例部分下载该示例http://www.oracle.com/technetwork/java/javase/downloads/。Ensemble示例包含布局及其源代码的示例。

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

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

相关文章

SSL-练习题目:种树 题解

种树(normal) Time Limit:1000MS Memory Limit:65536K Total Submit:213 Accepted:114 Description 在6*6的方格地盘中&#xff0c;种植24颗树&#xff0c;使每行、每列都有4颗树。   求出所有可能的种植方案总数。   种植方案的说明&#xff1a;输出一个6*6的矩阵&am…

哈希表的key的类型(传值与传引用)

放入哈希表的东西&#xff0c;如果是基础类型 内部按值传递&#xff0c;内存占用就是这个东西的大小. 放入哈希表的东西&#xff0c;如果不是基础类型 内部按引用传递&#xff0c;内存占用是这个东西内存地

《金色梦乡》金句摘抄(七)

System.out.println("《金色梦乡》"); System.out.println("小说类型的书就是比散文类型的书好看"); System.out.println("通俗易懂");轰叔的笑容中带着经验丰富的匠人才有的自信与骄傲&#xff0c;让青柳雅春佩服不已。但他的动作却只是用一根食…

来腾讯云开发者实验室 学习.NET

腾讯云开发者实验室为开发者提供了一个零门槛的在线实验平台,开发者实验室提供的能力&#xff1a; 零门槛扫码即可免费领取实验机器&#xff0c;支持使用自有机器参与&#xff0c;实验完成后支持保留实验成果&#xff1b; 在线WEBIDE支持shell命令操作&#xff0c;支持机器文件…

JavaFX官方教程(六)之带有JavaFX CSS的花式表单

翻译自 带有JavaFX CSS的花式表单 本教程通过添加级联样式表&#xff08;CSS&#xff09;使您的JavaFX应用程序看起来很有吸引力。您开发设计&#xff0c;创建.css文件并应用新样式。 在本教程中&#xff0c;您将获取一个使用标签&#xff0c;按钮和背景颜色的默认样式的登录…

搭建ssh框架的步骤

1.创建web项目 2.导入ssh 所需要的多有jar包&#xff0c;到web-inf下面的lib里面 3.将导入过来的jar包都build–path一下 4.切换到myeclipse database视图中&#xff0c;添加链接数据库的链接 5.新建一个数据库连接&#xff1a; 常用数据库连接字符串&#xff1a;https://blog.…

JAM的计数法

经典的题目了&#xff0c;自己想了个新方法 方法&#xff1a;先从低位往高位找到一个可以加的位数&#xff0c;然后把后面的数变为前面那个数加1 建议先从主程序开始看。本人蒟蒻&#xff0c;不好请原谅 方法&#xff1a;先从低位往高位找到一个可以加的位数&#xff0c;然后把…

JavaFX官方教程(七)之使用FXML创建用户界面

翻译自 使用FXML创建用户界面 本教程展示了使用JavaFX FXML的好处&#xff0c;JavaFX FXML是一种基于XML的语言&#xff0c;它提供了构建与代码的应用程序逻辑分开的用户界面的结构。 如果您从一开始就开始使用本文档&#xff0c;那么您已经了解了如何使用JavaFX创建登录应用…

块元素与行内元素转化(display属性)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>.div1{width: 200px;height: 200px;background-color: lightyellow;border: 1px solid lightcoral;margin: 0px auto;}.s1{/*行内元素设置宽和高…

DllImport 自动选择x64或x86 dll

前言 标题不知道怎么确切地命名&#xff0c;在.net的托管世界里&#xff0c;有时不得不使用c的某个动态库&#xff0c;比如ocr、opencv等&#xff0c;如果幸运&#xff0c;有前人已经包装出.net版本&#xff0c;但有些不非常流行的库&#xff0c;只能自己使用pinvoke或c cli包…

《金色梦乡》金句摘抄(八)

System.out.println("《金色梦乡》"); System.out.println("小说类型的书就是比散文类型的书好看"); System.out.println("通俗易懂"); System.out.println("这周能看完");他转身背对着安保探头&#xff0c;有种被看门人或看门狗盯上了…

JavaFX官方教程(八)之JavaFX中的动画和视觉效果

翻译自 JavaFX中的动画和视觉效果 您可以使用JavaFX快速开发具有丰富用户体验的应用程序。在本入门教程中&#xff0c;您将学习如何使用非常少的编码创建动画对象并获得复杂的效果。 图7-1显示了要创建的应用程序。 图7-1彩色圆圈应用 图7-2显示了该ColorfulCircles应用程序…

《金色梦乡》金句摘抄(九)

System.out.println("《金色梦乡》"); System.out.println("小说类型的书就是比散文类型的书好看"); System.out.println("通俗易懂"); System.out.println("这周能看完");他在观察&#xff0c;就像饲养员为了掌握动物的情况和习性而观…

广搜(初见)

以下是广搜水题 题意&#xff1a;输入一个n*n的迷宫&#xff0c;输入从起点到终点的最短路 输入&#xff1a; 12 //迷宫大小 2 9 11 8 //起点和终点 1 1 1 1 1 1 1 1 1 1 1 1 //邻接矩阵&#xff0c;0表示通&#xff0c;1表示不通 1 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 …

.Net Core 图片文件上传下载

当下.Net Core项目可是如雨后春笋一般发展起来&#xff0c;作为.Net大军中的一员&#xff0c;我热忱地拥抱了.Net Core并且积极使用其进行业务的开发&#xff0c;我们先介绍下.Net Core项目下实现文件上传下载接口。 一、开发环境 毋庸置疑&#xff0c;宇宙第一IDE VisualStu…

JavaFX官方教程(九)之转换

翻译自 Transformations Overview 本章介绍JavaFX中支持的转换。 所有转换都位于javafx.scene.transform包中&#xff0c;并且是类的子Transform类。 介绍转换 变换根据某些参数改变坐标系中图形对象的位置。JavaFX支持以下类型的转换&#xff1a; 翻译 回转 缩放 剪毛 …

《金色梦乡》金句摘抄(十)

System.out.println("《金色梦乡》"); System.out.println("小说类型的书就是比散文类型的书好看"); System.out.println("通俗易懂"); System.out.println("这周能看完");“面对遭受迫害的人&#xff0c;有人选择拯救&#xff0c;有人…

stream流把list转为map

1.对象中的属性转map 通过Collectors.toMap list.stream().collect(Collectors.toMap(Person::getId,Person::getName)); 2.收集对象本身 list.stream().collect(Collectors.toMap(Person::getId,list->list)