JavaFX工具怎样开发用户界面?(javafx 开发工具)

通过前面小节的学习,已经了解到使用JavaFX工具可以实现图形用户界面开发,接下来,就通过一个用户登录的案例来演示JavaFX的基本使用。

JavaFX有什么显著特征?

(1)创建JavaFX项目。打开Eclipse,并在Eclipse中依次选择“File”->“New”->“Others..”->“JavaFX Project”选项,创建一个名称为“javaFX”的项目,项目创建成功后,如图1所示。

JavaFX工具怎样开发用户界面?(javafx 开发工具)

图1 JavaFX项目默认结构

从图1可以看出,创建成功的JavaFX项目默认在application包下有两个文件:Main.java(程序的入口)和application.css(图形用户界面样式文件)。其中,Main.java文件中使用JavaFX工具初始化了一个图形界面,直接运行该文件,会得到一个空白窗口。

(2)编辑Main.java文件。在自动生成的Main.java文件中编写JavaFX项目主程序代码,如文件2所示。

文件1 Main.java

import javafx.application.*; import javafx.fxml.*; import javafx.stage.*; import javafx.scene.*; public class Main extends Application { public void start(Stage stage) throws Exception { // 使用FXMLLoader加载器,加载名为“fxml_example.fxml”的fxml文件 Parent root = FXMLLoader.load( getClass().getResource("fxml_example.fxml")); // 创建一个场景 Scene scene = new Scene(root, 300, 275); // 为图形界面窗口设置标题 stage.setTitle("FXML Welcome"); // 为图形界面窗口设置场景 stage.setScene(scene); // 将图形界面窗口设置为可见 stage.show(); } public static void main(String[] args) { // 通过Application抽象类的launch()方法启动程序 launch(args); } }

文件1中,Main类继承了Application抽象类并重写了start()方法,在该方法中,Stage就是JavaFX工具中用来表示整个图形工具界面窗口的类,在该类中需要加入一个Scene(场景)来进行填充,而所有的组件、元素都是构建在Scene中的。另外,在JavaFX 8中支持代码与布局和样式分离,所以在文件中通过FXMLLoader的load()方法引入了一个外联的fxml_example.fxml文件,在此fxml文件中就可以专心编写图形界面布局和组件相关功能了。

(3)创建fxml_example.fxml文件。在Main.java文件同级目录下依次选择“File”→“New”→“Others..”→“New FXML Document”选项,创建一个名称为“fxml_example”的fxml格式文件,如文件2所示。

文件2 fxml_example.fxml

<?xml version="1.0" encoding="UTF-8"?> <!-- 引入JavaFX工具相关类 --> <?import java.net.*?> <?import javafx.geometry.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <?import javafx.scene.text.*?> <!-- 创建一个GridPane网格式面板组件 --> <GridPane fx:controller="application.FXMLExampleController" xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10"> <!-- 通过相关标签创建一个模拟登录的“用户名”和“密码”的组件 --> <Text text="Welcome" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2" /> <Label text="用户名:" GridPane.columnIndex="0" GridPane.rowIndex="1" /> <TextField GridPane.columnIndex="1" GridPane.rowIndex="1" /> <Label text="密 码:" GridPane.columnIndex="0" GridPane.rowIndex="2" /> <PasswordField GridPane.columnIndex="1" GridPane.rowIndex="2" /> <!-- 通过HBox嵌入一个可调控位置的盒子组件--> <HBox spacing="10" alignment="bottom_right" GridPane.columnIndex="1" GridPane.rowIndex="4"> <!-- 在HBox盒子中装入一个 Button登录按钮,同时注册监听器 --> <Button text="登 录:" onAction="#handleSubmitButtonAction" /> </HBox> <!-- 作为登录按钮的提示框 --> <Text fx:id="actiontarget" GridPane.columnIndex="0" GridPane.columnSpan="2" GridPane.halignment="RIGHT" GridPane.rowIndex="6" /> </GridPane>

文件2中,编码风格与XML文档类似。其中第1行代码用来引入fxml文件约束;第3~7行代码用于引入JavaFX工具相关类;第9~29行代码使用<GridPane>标签创建了一个网格式的面板组件,然后通过各种子标签和属性向该面板组件中进行填充。另外在<GridPane>标签中使用fx:controller="application.FXMLExampleController"引入了application包下的FXMLExampleController事件控制类,并且在第23行中,使用onAction="#handleSubmitButtonAction"注册了FXMLExampleController类中的监听器方法handleSubmitButtonAction()。

(4)创建并编辑FXMLExampleController.java文件。在Main.java文件同级目录下创建一个名为FXMLExampleController的事件处理类,然后在该文件中编写事件处理方法,如文件3所示。

文件3 FXMLExampleController.java

import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.text.Text; public class FXMLExampleController { // 与fxml_example.fxml文件中的登录提示框fx:id一致 @FXML private Text actiontarget; // 为fxml_example.fxml文件中的登录按钮编写事件处理 @FXML protected void handleSubmitButtonAction(ActionEvent event) { actiontarget.setText("点击了登录按钮"); } }

文件3中,FXMLExampleController.java类专门用于编写事件处理方法,其中使用@FXML注解用来表示actiontarget文本属性和handleSubmitButtonAction()方法可以被fxml格式文件访问,同时handleSubmitButtonAction()的方法名与文件2中第23行代码onAction="#handleSubmitButtonAction"中标记的名称需要相同,actiontarget属性名与文件2中第26行代码fx:id="actiontarget"的id名也要相同。

完成上述4步操作后,运行主程序Main类,结果如图2所示。

JavaFX工具怎样开发用户界面?(javafx 开发工具)

图2 JavaFX项目初步效果图

(5)为fxml_example.fxml图形布局文件引入外联的CSS样式文件。

● 先在fxml_example.fxml文件最后的</GridPane>标签之前引入名称为application.css的样式表文件,示例如下所示:

<!-- 加入名为application.css的样式表文件 --><stylesheets><URL value="@application.css" /></stylesheets>

● 如果要为GridPane面板组件根元素设置样式,需要在<GridPane>标签中添加一个styleClass="root"的属性,示例如下所示:

<GridPane fx:controller="fxmlexample.FXMLExampleController" xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10" **styleClass="root"**>

● 同时可以为某个组件所在标签添加一个id,为该id所在组件设置样式,比如为text="Welcome"的<Text>标签所在组件添加一个id,示例如下所示:

<Text **id="welcome-text"** text="Welcome" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"/>

(6)编辑application.css样式文件。打开application.css样式文件,为图8-37所示的JavaFX图形用户接口项目编写CSS样式,如文件4所示。

文件4 application.css

/* 为GridPane面板组件根元素添加背景图片 */ .root { -fx-background-image: url("background.jpg"); } /* 为label标签组件设置大小、颜色、展示效果 */ .label { -fx-font-size: 12px; -fx-font-weight: bold; -fx-text-fill: #333333; -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); } /* 为id为welcome-text的组件设置大小、字体、颜色、展示效果 */ #welcome-text { -fx-font-size: 32px; -fx-font-family: "Arial Black"; -fx-fill: #818181; -fx-effect: innershadow( three-pass-box ,rgba(0,0,0,0.7),6, 0.0 , 0 , 2 ); } /* 为id为actiontarget的组件设置大小、颜色、展示效果 */ #actiontarget { -fx-fill: FIREBRICK; -fx-font-weight: bold; -fx-effect: dropshadow( gaussian , rgba(255,255,255,0.5) , 0,0,0,1 ); } /* 为button标签组件设置大小、颜色、展示效果 */ .button { -fx-text-fill: white; -fx-font-family: "Arial Narrow"; -fx-font-weight: bold; -fx-background-color: linear-gradient(#61a2b1, #2A5058); -fx-effect: dropshadow( three-pass-box ,rgba(0,0,0,0.6),5, 0.0 , 0 , 1 ); } /* 设置当鼠标移到button按钮时的大小、颜色、展示效果 */ .button:hover { -fx-background-color: linear-gradient(#2A5058, #61a2b1); }

在文件4中,application.css文件专门用于封装文件样式,在上一步中为fxml_example.fxml图形布局文件引入了该外联的CSS样式文件,<GridPane>根组件的background.jpg背景图片位于该文件所在同级目录中。其中,对fxml_example.fxml文件中某个名称的标签进行样式设置时,可以使用点号 标签名(如.button)的形式进行设置;对某个id所对应的标签组件进行样式设置时,可以使用井号 id(如#welcome-text)的形式进行设置。

当编写完并引入application.css样式文件成功后,再次启动主程序入口Main类中的main()方法,结果如图3所示。

JavaFX工具怎样开发用户界面?(javafx 开发工具)

图3 JavaFX项目最终效果图


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月20日 上午10:47
下一篇 2023年4月20日 上午11:03

相关推荐

  • 工程材料管理系统v9.0的操作(免费工程项目材料管理系统)

    免费工程项目材料管理系统 随着现代工程项目的不断增加,项目管理变得更加复杂和多样化。传统的手工管理方法已经无法适应现代项目的需要,因此,免费工程项目材料管理系统成为了一个必要的工具…

    科研百科 2024年6月6日
    55
  • IT行业是干什么的?

    很多人其实都不清楚IT行业是做什么的?但很清楚,现在到处都 在说IT行业,今天栈程教育戍码编程的小戍老师来和大家聊聊,神奇的IT行业是做什么的呢? 我们可以从最简单的模型开始,一个…

    科研百科 2023年5月14日
    161
  • 工程项目管理三控三管

    工程项目管理三控三管 工程项目管理是项目管理中的重要组成部分,它涉及到项目计划、执行、控制和收尾等多个方面。在工程项目管理中,三控三管是一个非常重要的概念,它指的是通过控制项目的三…

    科研百科 2024年9月22日
    18
  • 企业人事合同管理系统

    企业人事合同管理系统 随着企业规模的不断扩大,人事管理也变得越来越复杂。为了更好地管理企业的人力资源,许多企业都选择了使用人事合同管理系统。人事合同管理系统可以帮助企业高效地管理人…

    科研百科 2024年9月16日
    26
  • 项目资源管理系统的优势

    项目资源管理系统的优势 随着项目管理的不断发展,项目资源管理系统(Project Resource Management,简称PRDM)已经成为许多组织中不可或缺的工具。PRDM可…

    科研百科 2024年12月14日
    1
  • 职称申报科研项目主要任务怎么写职称申报科研项目主要任务怎么写

    职称申报科研项目主要任务怎么写 随着科技的不断发展,职称申报科研项目已经成为了许多职称评审专家和科研从业者必不可少的一部分。在职称申报科研项目中,主要任务怎么写成为了许多人需要关注…

    科研百科 2024年7月5日
    129
  • 软件项目管理例子

    软件项目管理示例 软件项目管理是软件开发过程中非常重要的一个环节。一个好的软件项目管理能够确保项目按时、按质量完成,并且能够满足客户需求。本文将介绍一个软件项目管理的示例,以帮助读…

    科研百科 2024年8月22日
    41
  • 九段总裁,九段管理,九段HR,九段秘书,你在哪段?(九段经理人是什么意思)

    导读:总裁、管理、HR、秘书,均有三六九等;本文很详尽地将它们分成九个段位进行描述,自然九段最强,内容充实,文章较长,诸位不妨慢慢品读,好好对照一下,看你究竟处在哪个段位。 一段总…

    科研百科 2022年9月22日
    1.2K
  • ai智能辅助工具

    AI智能辅助工具: 让工作更加轻松 随着科技的不断发展,AI智能辅助工具已经成为现代职场中不可或缺的一部分。这些工具不仅能够提高工作效率,还能够为我们提供许多便利和帮助。在本文中,…

    科研百科 2024年10月14日
    5
  • 以县域高质量发展促进共同富裕(推动高质量发展,实现共同富裕)

    作者:浙江大学区域协调发展研究中心副主任、浙江大学中国西部发展研究院常务副院长董雪兵 面对新发展阶段的新形势,以习近平同志为核心的党中央科学研判国际国内形势,把实现全体人民共同富裕…

    科研百科 2022年9月13日
    174