使用JavaFx Fxml笔记

使用JavaFx Fxml实现账号密码登录 

HelloApplication.java:
package com.example.dr295cmonth7;import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.stage.Stage;import java.io.IOException;
import java.util.Objects;public class HelloApplication extends Application {//private 私有对象private Stage primaryStage;@Overridepublic void start(Stage stage) throws IOException {//赋值this.primaryStage = stage;FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("table.fxml"));Scene scene = new Scene(fxmlLoader.load(), 0, 0);scene.getStylesheets().add(Objects.requireNonNull(getClass().getResource("assets/styles.css")).toExternalForm());stage.setTitle("DR295C数据采集传输仪");stage.setScene(scene);stage.show();}public static void main(String[] args) {launch();}public void showSuccessDialogAndNavigate() {Alert alert3 = new Alert(Alert.AlertType.INFORMATION);alert3.setTitle("登录成功");alert3.setHeaderText("欢迎登录!");alert3.setContentText("即将跳转至主页面");alert3.showAndWait().ifPresent(response -> {if (response == ButtonType.OK) {//点击确定之后的逻辑} else {// 用户点击了取消按钮或关闭了对话框的处理逻辑System.out.println("用户点击了取消按钮或关闭了对话框");}});}
}
调起其他页面方法
// HelloApplication helloApplication = new HelloApplication();
// helloApplication.showSuccessDialogAndNavigate();

login.fxml:

<?xml version="1.0" encoding="UTF-8"?><?import javafx.scene.layout.*?>
<?import javafx.scene.control.*?><GridPane xmlns:fx="http://javafx.com/fxml"fx:controller="com.example.dr295cmonth7.LoginView" alignment="center" hgap="10" vgap="10"><VBox alignment="CENTER" maxWidth="300.0" prefWidth="300.0" spacing="10.0"><HBox alignment="CENTER" maxWidth="300.0" prefWidth="300.0" spacing="10.0"><Label text="登录" GridPane.columnIndex="0" GridPane.rowIndex="0"/></HBox><HBox alignment="CENTER" maxWidth="300.0" prefWidth="300.0" spacing="10.0"><Label text="账号:" GridPane.columnIndex="0" GridPane.rowIndex="0"/><TextField fx:id="usernameField" GridPane.columnIndex="1" GridPane.rowIndex="0"/></HBox><HBox alignment="CENTER" maxWidth="300.0" prefWidth="300.0" spacing="10.0"><Label text="密码:" GridPane.columnIndex="0" GridPane.rowIndex="1"/><PasswordField fx:id="passwordField" GridPane.columnIndex="1" GridPane.rowIndex="1"/></HBox><Label fx:id="welcomeText" alignment="CENTER" maxWidth="1.7976931348623157E308"style="-fx-text-fill: red;"/><Button text="登录" onAction="#handleLogin" GridPane.columnIndex="1" GridPane.rowIndex="2"/></VBox>
</GridPane>

 handleLogin.java:

package com.example.dr295cmonth7;import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.stage.Stage;import java.util.Objects;public class LoginView {@FXMLprivate TextField usernameField;@FXMLprivate PasswordField passwordField;@FXMLprivate Label welcomeText;@FXMLprivate Button jumpButton;@FXMLprivate void handleLogin() throws Exception {String usernameValue = usernameField.getText();String passwordValue = passwordField.getText();if (usernameValue.isEmpty() || passwordValue.length() < 6) {Alert alert = new Alert(Alert.AlertType.ERROR);alert.setTitle("提示");alert.setHeaderText("账号和密码不能为空,密码长度至少为 6 位");alert.showAndWait();welcomeText.setText("账号和密码不能为空,密码长度至少为 6 位");return;}if ("admin".equals(usernameValue) && "123456".equals(passwordValue)) {//跳转页面Parent subPage = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("table.fxml")));Scene subPageScene = new Scene(subPage);Stage stage = (Stage) jumpButton.getScene().getWindow();stage.setScene(subPageScene);stage.show();//调起其他页面方法// HelloApplication helloApplication = new HelloApplication();// helloApplication.showSuccessDialogAndNavigate();} else {// 登录失败的提示Alert alert = new Alert(Alert.AlertType.ERROR);alert.setTitle("错误");alert.setHeaderText("账号或密码错误");alert.showAndWait();}}
}

使用JavaFx Fxml实现开始结束时间:

首先创建 TimeRange.fxml 文件:

<?xml version="1.0" encoding="UTF-8"?><?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?><HBox xmlns:fx="http://javafx.com/fxml/1" spacing="10"><Label text="创建日期"/><DatePicker fx:id="startDatePicker" prefWidth="140.0"/><Label text="-"/><DatePicker fx:id="endDatePicker" prefWidth="140.0"/><Button onAction="#query" text="查询" textFill="WHITE" GridPane.columnIndex="2" GridPane.rowIndex="0" styleClass="button-all-common" />
</HBox>

然后创建 TimeRangeController.java 类:

import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.fxml.FXML;
import javafx.scene.control.DatePicker;import java.time.LocalDate;public class TimeRangeController {private ObjectProperty startDate = new SimpleObjectProperty();@FXMLprivate DatePicker startDatePicker;private ObjectProperty endDate = new SimpleObjectProperty();@FXMLprivate DatePicker endDatePicker;//以后七天:LocalDate.now().plusDays(7)  ;前七天:LocalDate.now().minusDays(7)public TimeRangeController() {// 初始化日期属性 方法一:startDate.set(LocalDate.now().minusDays(7));endDate.set(LocalDate.now());// 初始化日期属性 方法二:
//        LocalDate today = LocalDate.now();
//        startDate.set(today.minusDays(7));
//        endDate.set(today);}@FXMLpublic void initialize() {startDatePicker.valueProperty().bindBidirectional(startDate);endDatePicker.valueProperty().bindBidirectional(endDate);}//查询@FXMLvoid query(ActionEvent event) {System.out.println(startDate.get());   //开始时间System.out.println(endDate.get());   //结束时间}}

使用JavaFx Fxml定义各种类型的数据:

字符串 + 整数 :
private StringProperty searchValue = new SimpleStringProperty();
@FXML
private TextField searchField;

表格:

@FXML
private TableView<User> operateTableView;@FXML
private TableColumn<User, String> startTime;@FXML
private TableColumn<User, String> endTime;@FXML
private TableColumn<User, String> operator;

 

 日期:

private ObjectProperty startDate = new SimpleObjectProperty();
@FXML
private DatePicker startDatePicker;

 开关

@FXML
    private CheckBox booleanCheckBox;

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

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

相关文章

【论文精读】 | 基于图表示的视频抑郁症识别的两阶段时间建模框架

文章目录 0、Description1、Introduction2、Related work2.1 Relationship between depression and facial behaviours2.2 Video-based automatic depression analysis2.3 Facial graph representation 3、The proposed two-stage approach3.1 Short-term depressive behaviour…

请你谈谈:vue的渲染机制(render)- 2举例说明问题

如何在 Vue 的 render 函数中使用 createElement 方法来创建虚拟节点&#xff08;VNode&#xff09;。这里是一个稍微整理后的示例&#xff0c;它直接对应于你提供的注释和代码片段&#xff0c;但作为一个完整的 render 函数的一部分&#xff0c;可能位于一个 Vue 组件的 scrip…

javascript(一)

一、基本语法 1.位置 (1)JavaScript脚本必须位于<script>与</script>之间 (2)<script>标签可以位于<body>或者<head>部分中 2.输出语句 (1)window.alter() 弹出警告框 (2)document.write() 可以将内容在网页中打印出来&#xff0c;同时也…

二维01背包 背包滚动数组 分割等和子集 DAY22

11.背包理论基础 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 背包问题有多种背包方式&#xff0c;常见的有&#xff1a;01背包、完全…

进程间通信方式--管道

每个进程的用户地址空间都是独立的&#xff0c;一般而言是不能互相访问的&#xff0c;但内核空间是每个进程都共享的&#xff0c;所以进程之间要通信必须通过内核。 管道 管道的linux命令&#xff1a;ps auxf | grep mysql 上面命令行里面的竖线就是一个管道&#xff0c;它的功…

新手vue学习问题汇总(自用)(长期更新)

1.export default export default 是 ES6 模块语法&#xff0c;用于导出模块的默认成员。在 Vue.js 中&#xff0c;通常用来导出一个组件对象&#xff0c;使其可以在其他文件中被导入并使用。 2.props props 是组件接收外部数据的方式。父组件可以通过向子组件传递 props 来…

紫杉醇生物合成机制研究进展-文献精读35

紫杉醇生物合成机制研究进展 摘要 紫杉醇是目前已发现的最具抗癌活性的天然广谱抗癌药物之一&#xff0c;其生产方式主要依赖于从珍稀植物红豆杉中进行分离提取以及化学半合成&#xff0c;因其含量稀少&#xff0c;生产能力受到严重的限制。随着红豆杉基因组的全解析和合成生…

如何在 Windows 上安装并配置 VNC 远程连接树莓派,并结合Cpolar实现公网远程访问

目录 ⛳️推荐 前言 1. 使用 Raspberry Pi Imager 安装 Raspberry Pi OS 2. Windows安装VNC远程树莓派 3. 使用VNC Viewer公网远程访问树莓派 3.1 安装Cpolar步骤 3.2 配置固定的公网地址 3.3 VNC远程连接测试 4. 固定远程连接公网地址 4.1 固定TCP地址测试 ⛳️推荐…

内网隧道学习笔记

1.基础&#xff1a; 一、端口转发和端口映射 1.端口转发是把一个端口的流量转发到另一个端口 2.端口映射是把一个端口映射到另一个端口上 二、http代理和socks代理 1.http带那里用http协议、主要工作在应用层&#xff0c;主要用来代理浏览网页。 2.socks代理用的是socks协议、…

编码器如何在stm32上使用?

编码器如何在stm32上使用 文章目录 编码器如何在stm32上使用1. 编码器是什么&#xff1f;2. 如何在stm32上使用编码器1. 编码器的基本原理2. STM32上的实现3. 代码实现 1. 编码器是什么&#xff1f; 编码器是一种传感器或设备&#xff0c;用于测量位置、角度或速度&#xff0c…

坐标系转换公式

坐标系转换2种情况&#xff1a; 一、XOY坐标系不动&#xff0c;点P(x, y) 沿顺时针方向旋转 θ \thetaθ&#xff0c;得在XOY坐标系的坐标为P(x′, y′) 设某点与原点连线和X轴夹角为b度&#xff0c;以原点为圆心&#xff0c;逆时针转过a度 , 原点与该点连线长度为R, [x,y]为…

电测量数据交换DLMSCOSEM组件第53部分:DLMSCOSEM应用层(上)

1.范围 本部分规定了DLMS/COSEM客户机和服务器的DLMS/COSEM应用层的结构、服务和协议。同时,定义规则规定DLMS/COSEM通信配置。 它定义了用于建立和释放应用程序连接的服务,以及用于访问GB/T17215.662中使用逻辑名称(LN)或短名称(SN)引用定义的COSEM接口对象的方法和属性…

先用先发!小样本故障诊断新思路!Transformer-SVM组合模型多特征分类预测/故障诊断(Matlab)

先用先发&#xff01;小样本故障诊断新思路&#xff01;Transformer-SVM组合模型多特征分类预测/故障诊断&#xff08;Matlab&#xff09; 目录 先用先发&#xff01;小样本故障诊断新思路&#xff01;Transformer-SVM组合模型多特征分类预测/故障诊断&#xff08;Matlab&#…

关于 OSPF LSA 序列号范围 0x80000001-0x7FFFFFFF 释疑正本清源

注&#xff1a;机翻&#xff0c;未校对。 正本&#xff1a;RFC 2328 OSPF Version 2 中相关解释 April 1998 12.1.6. LS sequence number 12.1.6. 序列号 The sequence number field is a signed 32-bit integer. It is used to detect old and duplicate LSAs. The space …

找工作准备刷题Day14 回溯算法 (卡尔41期训练营 7.29)

第一题&#xff1a;Leetcode376. 摆动序列 题目描述 解题思路 使用两个变量&#xff1a;preDiff 和 curDiff&#xff0c;分别记录 前一次相邻元素差值和 此处相邻元素值之差&#xff0c;只有当preDiff 和 curDiff 符号不同&#xff0c;摆动序列长度加一。 初始&#xff1a;长…

1.4、存储系统

目录 存储器的层次结构外存&#xff08;辅存&#xff09;内存CPU的寄存器Cache总结举例局部性原理 练习题 高速缓存Cache总结举例总结 练习题 Cache的地址映像方法直接相联映像全相联映像组相联映像练习题 Cache替换算法Cache页面淘汰算法Cache的读写过程练习题 磁盘总结固态硬…

dpdk 响应icmp请求(Echo or Echo Reply Message)

注&#xff1a;对于"Echo or Echo Reply Message"类型的icmp报文&#xff0c;响应报文的Identiy和Sequence Number的值与请求报文的这两个字段的值要相同。 Identifier&#xff08;标识符&#xff09;字段通常由发送方设置&#xff0c;并被用于将ICMP请求与相应的回复…

python采集阿里巴巴历年员工人数统计报告

数据为2012到2022财年阿里巴巴每年的全职员工数量。截止2022年3月31日&#xff0c;阿里巴巴共有全职员工254941人&#xff0c;比上年增长3479人。 数据来源于阿里巴巴20-F和F-1文件 按阿里巴巴财政年度进行统计&#xff0c;阿里巴巴财年结束日期为每年3月31日 为全职员工人数 阿…

好用的开源免费录屏工具|OBS录屏参数设置|OBS录屏参数优化|录屏工具科普|OBS如何设置录屏才能不模糊

背景/引言 我的需求 相信这也是大多数用户的录屏需求。 选择一款开源免费的PC录屏软件&#xff08;开源意味着可能需要了解一些参数概念以及如何设置&#xff0c;设置多少的问题&#xff0c;灵活性带来入门门槛的问题&#xff0c;但是相应的也会掌握一些视频相关的知识&…

WireShark 更改界面主题

背景 Windows 是黑色主题 安装 WireShark 后&#xff0c;WireShark 界面也是黑色主题 预期 想要将 WireShark 界面更改为白色主题 操作 启动 wireshark 时添加 -platform windows:darkmode0 参数 <Wireshark.exe 路径> -platform windows:darkmode0 例&#xff1a;…