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

复制代码
HelloApplication:
复制代码
package com.example.dr295cmonth7;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;

public class HelloApplication extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("login.fxml"));
        Scene scene = new Scene(fxmlLoader.load(), 0, 0);
        stage.setTitle("DR295C数据采集传输仪");
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }
}

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.scene.control.Alert;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;

public class LoginView {

    @FXML
    private TextField usernameField;

    @FXML
    private PasswordField passwordField;

    @FXML
    private Label welcomeText;

    @FXML
    void handleLogin(ActionEvent event) {
        String username = usernameField.getText();
        String password = passwordField.getText();

        String emailPattern = "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$";
        if (username.isEmpty() || password.length() < 6||!username.matches(emailPattern)) {
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("错误");
            if (username.isEmpty()) {
        alert.setHeaderText("账号不能为空");
    } else if (password.isEmpty()) {
        alert.setHeaderText("密码不能为空");
    } else {
        alert.setHeaderText("账号格式不正确,应为有效的邮箱地址");
    }
    alert.showAndWait();
    return;
        }
        // 假设正确的账号为 "admin",密码为 "123456"
        if (!"admin".equals(username) ||!"123456".equals(password)) {
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("提示");
            alert.setHeaderText("账号或密码错误");
            alert.showAndWait();
            welcomeText.setText("登录失败");
            return;
        }
        // 登录成功的处理
        System.out.println("登录成功");
    }
}
相关推荐
anyup几秒前
像这种问题千万别自己动手,否则你可太看不起 AI 了
前端·架构·trae
郝学胜-神的一滴几秒前
Qt 高级编程 037:QSS按钮样式封神指南
开发语言·c++·qt·软件工程·用户界面
DFT计算杂谈2 分钟前
SCIENTIFIC REPORTS 非 van der Waals可调二维磁性材料设计平台
开发语言·php
库拉库拉里11 分钟前
深入理解 C# 异步编程:同步、Task.Wait () 与 await 的本质区别及实践指南
开发语言·c#
霍霍的袁21 分钟前
【C++】string类 从 入门使用 到 底层深浅拷贝模拟实现
开发语言·c++·visual studio
酷在前行27 分钟前
【R绘图】Nature Communications 半眼图复刻:分布、区间与多面板排版(保姆级教程)
android·开发语言·r语言
这个人懒得名字都没写35 分钟前
Flask + PyArmor Gunicorn启动报错:RuntimeError: unauthorised use of script
python·flask·gunicorn·pyarmor
C++、Java和Python的菜鸟40 分钟前
第10章 后端Web进阶(Maven高级)
开发语言·python
hunterandroid1 小时前
[鸿蒙从零到一] HarmonyOS Web 组件与 JSBridge 通信实战:从页面加载到安全协议
前端
xingren1 小时前
「拍摄器」UI 特效 - 在 Winform/WPF/WinUI3/Avalonia/Web 的实现
前端