Java-GUI(登录界面示例)

news2024/11/30 5:27:52

简述:

步骤:

(1)构造界面(将组件对象加入容器对象,注意:应设定对容器对象的布局策略)

(2)为界面加入事件响应处理(如单击按钮)

实现:

两种方式实现,只有用户名为"admin"且密码为"1129"时才会显示,"admin,欢迎您",否则提示输入错误。

 一般方法
package harper1125.GUI;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Color;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class login01 extends JFrame implements ActionListener{
    public static void main(String[] args) {
        new Click_button();
    }
    private JButton b_ok,b_exit;
    private JLabel t_la;//用于显示信息的标签
    private JTextField userName;//用户文本框
    private JPasswordField password;//密码框
    public login01() {
        super("第一个登陆界面");//设定窗体标题
        setSize(500, 100);//设定框架宽度和高度
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBackground(Color.lightGray);
        setLocation(300, 240);//指定框架左上角的显示位置,(0,0)表示屏幕的左上角
        setLayout(new FlowLayout());//指定框架的默认布局方式,
        /**
         * 若未指定布局,组件将自动布满整个容器,后面加入的组件回遮盖前面的组件
         */
        userName = new JTextField(5);
        password = new JPasswordField(5);

        add(new JLabel("用户名:"));
        add(userName);
        add(new JLabel("密码:"));

        add(password);
        b_ok = new JButton("确定");
        add(b_ok);
        b_exit = new JButton("退出");
        add(b_exit);

        t_la = new JLabel(" ");

        add(t_la);//增加一个临时标签,用来显示信息
        setVisible(true);
        /**
         * 以下建立事件源与处理者之间的关联,两个按钮使用同一个处理者对象
         */
        b_exit.addActionListener(this);//建立关联
        b_ok.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e){//处理者处理事件
        if(e.getSource()== b_exit){
            //用e.getSource()识别事件源
            System.exit(0);
        }
        if(e.getActionCommand().equals("确定")){
            //用另一种方式识别事件源
            String ketText = String.valueOf(password.getPassword());
            //获取密码框的文本
            if(userName.getText().equals("admin") && ketText.equals("1129")){
                t_la.setText("欢迎您,admin");
            }else {
                t_la.setText("用户或密码输入错误!");
                setVisible(true);//显示临时标签
            }
        }

    }

}
界面与事件处理者相分离的方法
package Test.test4;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
    public class login02  {
        public static void main(String[] args) {
          login lo = new login();
          Del de = new Del();
          lo.setDel(de);
            de.setLogin(lo);



        }
    }

     class login extends JFrame {
        JButton b_ok,b_exit;
        JLabel t_la;//用于显示信息的标签
        JTextField userName;//用户文本框
        JPasswordField password;//密码框
public login() {

        super("第一个登陆界面");//设定窗体标题
        setSize(500, 100);//设定框架宽度和高度
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBackground(Color.lightGray);
        setLocation(300, 240);//指定框架左上角的显示位置,(0,0)表示屏幕的左上角
        setLayout(new FlowLayout());//指定框架的默认布局方式,
        /**
         * 若未指定布局,组件将自动布满整个容器,后面加入的组件回遮盖前面的组件
         */

        userName = new JTextField(5);
        password = new JPasswordField(5);

        add(new JLabel("用户名:"));
        add(userName);
        add(new JLabel("密码:"));

        add(password);
        b_ok = new JButton("确定");
        add(b_ok);
        b_exit = new JButton("退出");
        add(b_exit);
        t_la = new JLabel(" ");

        add(t_la);//增加一个临时标签,用来显示信息
        setVisible(true);
        /**
         * 以下建立事件源与处理者之间的关联,两个按钮使用同一个处理者对象
         */
        }
        Del del;
public  void setDel(Del l){
        del = l;
    b_exit.addActionListener((ActionListener) l);//建立关联
    b_ok.addActionListener((ActionListener) l);
        }

        }

        class Del implements  ActionListener{//处理者处理事件
            login l;
            public void setLogin(login lo){
                l = lo;
            }

            public void actionPerformed(ActionEvent e){
                if(e.getSource()== l.b_exit){
                    //用e.getSource()识别事件源
                    System.exit(0);
                }
                if(e.getActionCommand().equals("确定")){
                    //用另一种方式识别事件源
                    String ketText = String.valueOf(l.password.getPassword());
                    //获取密码框的文本
                    if(l.userName.getText().equals("admin") && ketText.equals("1129")){
                        l.t_la.setText("欢迎您,admin");
                    }else {
                        l.t_la.setText("用户或密码输入错误!");
                        l.setVisible(true);//显示临时标签
                    }
                }
            }


        }





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

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

相关文章

屏幕分辨率|尺寸|颜色深度指纹

一、前端通过window.screen接口获取屏幕分辨率 尺寸 颜色深度,横屏竖屏信息。 二、window.screen c接口实现: 1、third_party\blink\renderer\core\frame\screen.idl // https://drafts.csswg.org/cssom-view/#the-screen-interface[ExposedWindow ] …

【论文阅读】三平面相关与变体

文章目录 1. 【CVPR2023】Tri-Perspective View for Vision-Based 3D Semantic Occupancy Prediction动机可视化方法Pipeline 2. 【2023/08/31】PointOcc: Cylindrical Tri-Perspective View for Point-based 3D Semantic Occupancy Prediction动机(针对雷达点云、与…

Java - JSR223规范解读_在JVM上实现多语言支持

文章目录 1. 概述2. 核心目标3. 支持的脚本语言4. 主要接口5. 脚本引擎的使用执行JavaScript脚本执行groovy脚本1. Groovy简介2. Groovy脚本示例3. 如何在Java中集成 Groovy4. 集成注意事项 6. 与Java集成7. 常见应用场景8. 优缺点9. 总结 1. 概述 JSR223(Java Spe…

定时/延时任务-ScheduledThreadPoolExecutor的使用

文章目录 1. 概要2. 固定速率和固定延时2.1 固定速率2.2 固定延时 3. API 解释3.1 schedule3.2 固定延时 - scheduleWithFixedDelay3.2 固定速率 - scheduleWithFixedDelay 4. 小结 1. 概要 前三篇文章的地址: 定时/延时任务-自己实现一个简单的定时器定时/延时任…

什么是sfp,onu,​为什么PON(​俗称“光猫”​)模块使用SC光纤接口

在现代网络设备中,我们经常会看到SFP或SFP接口的身影,这些接口有时被简称为光口,但这个称呼并不严谨。有些厂商则称之为多功能口或多用途口,然而这对于不了解的人来说可能还是一头雾水。SFP,即Small Form-Factor Plugg…

005 MATLAB符号微积分

前言: 在MATLAB中,数值与符号的主要区别在于它们的处理方式和应用场景 数值计算适用于实际的数值计算问题,如矩阵运算、数据分析等。符号计算适用于符号推导、公式化简和符号解析,如理论物理和工程计算。 01 符号对象 1.基本符…

深入实践:从零开始掌握GPT的应用开发

1. 为什么选择GPT? GPT(Generative Pre-trained Transformer)是当下最具影响力的语言生成模型之一,适用于生成文本、分析语言情感、翻译、多任务对话等多种场景。相比传统算法和模型,GPT有以下显著优势: …

WRF-Chem模式安装、环境配置、原理、调试、运行方法;数据准备及相关参数设置方法

大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因素是控制大气污染的关键自然因素。大气污染问题既是局部、当地的,也是区域的,甚至是全球的。本地的污染物排放除了对当地造成严重影响外,同时还会在…

开源项目:纯Python构建的中后台管理系统

来源:Python大数据分析 费弗里 大家好我是费老师,目前市面上有很多开源的「中后台管理系统」解决方案,复杂如「若依」那种前端基于Vue,后端基于Java的框架,虽然其提供了较为完善的一整套前后端分离权限管理系统解决方…

汽车免拆诊断案例 | 2017款捷豹F-PACE车发动机偶尔怠速不稳

故障现象  一辆2017款捷豹F-PACE车,搭载2.0 L GTDi发动机,累计行驶里程约为16万km。车主反映,车辆组合仪表上发动机故障灯点亮(图1),且发动机偶尔怠速不稳。 图1 发动机故障灯点亮 故障诊断 接车后试车…

SQL进阶技巧:非等值连接--单向近距离匹配

目录 0 场景描述 1 数据准备 2 问题分析 ​编辑 ​编辑 3 小结 数字化建设通关指南 0 场景描述 表 t_1 和表 t_2 通过 a 和 b 关联时,有相等的取相等的值匹配,不相等时每一 个 a 的值在 b 中找差值最小的来匹。 表 t_1:a 中无重复值…

泷羽sec-云技术

基础之云技术 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec…

element ui select绑定的值是对象的属性时,显示异常.

需要声明 value-key"value",如果还不行可能是数据类型不一致数字0和字符串0是不一致的. el-select v-model"value" clearable placeholder"Select" value-key"value" style"width: 240px"><!-- <el-option v-for&…

【ChatGPT大模型开发调用】如何获得 OpenAl API Key?

如何获取 OpenAI API Key 获取 OpenAI API Key 主要有以下三种途径&#xff1a; OpenAI 官方平台 (推荐): 开发者用户可以直接在 OpenAI 官方网站 (platform.openai.com) 注册并申请 API Key。 通常&#xff0c;您可以在账户设置或开发者平台的相关页面找到申请入口。 Azure…

沸点 | 嬴图Powerhouse全面发布:从用户视角看嬴图实时图数据库的成长与价值

嬴图Powerhouse&#xff0c;直译过来就是能量站、动力站&#xff0c;它是嬴图自2019年发布高密度并行图计算引擎以来的一个里程碑&#xff0c;包括对整个产品架构的一个彻底革新&#xff0c;为大量复杂数据进行计算、分析和存储提供了快速和强大的动力支持。目前嬴图的用户正在…

深入理解计算机系统,源码到可执行文件翻译过程:预处理、编译,汇编和链接

1.前言 从一个高级语言到可执行程序&#xff0c;要经过预处理、编译&#xff0c;汇编和链接四个过程。大家可以思考下&#xff0c;为什么要有这样的过程&#xff1f; 我们学习计算机之处&#xff0c;就应该了解到&#xff0c;计算机能够识别的只有二进制语言&#xff08;这是…

Gitee markdown 使用方法(持续更新)

IPKISS 获取仿真器件的名称 引言正文标题换行第一种------在行末尾手动键入两个空格第二种------额外换行一次&#xff0c;即两行中间留一个空行 缩进与反缩进代码块行内代码添加图片添加超链接 加粗&#xff0c;倾斜&#xff0c;加粗倾斜 引言 有些保密性的文件或者教程&…

Element UI 打包探索【1】

目录 第一个命令 第二个命令 node build/bin/iconInit.js node build/bin/build-entry.js node build/bin/i18n.js node build/bin/version.js 总结 最近在接触组件库的项目&#xff0c;所以特意拿来Element UI借鉴学习一下&#xff0c;它算是做前端的同学们离不开的一…

关于IDE的相关知识之一【使用技巧】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于ide使用技巧的相关内容&#xff01; 关于…

【C语言】字符串字面量的特殊性

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;字符串字面量的定义和存储位置&#x1f4af;字符串字面量的不可修改性&#x1f4af;字符数组与字符串字面量的区别字符数组的定义和可修改性指针与数组的区别 &#x1…