斗地主登录界面(JAVA图形化界面)设置

1.实现代码

import CodeUtil.CodeUtil;
import domain.User;import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;public class LoginGame extends JFrame implements MouseListener {static ArrayList<User> alluser=new ArrayList<>();static {alluser.add(new User("张三","aaa"));alluser.add(new User("李四","bbb"));}JButton login = new JButton();JButton register = new JButton();JTextField username = new JTextField();JPasswordField password = new JPasswordField();JTextField code = new JTextField();//正确的验证码JLabel rightCode = new JLabel();public LoginGame(){initJFrame();initView();this.setVisible(true);}public void initJFrame(){this.setSize(633,423);this.setTitle("斗地主V1.0登录");//设置左上角小标题this.setAlwaysOnTop(true);//设置一直置顶this.setLocationRelativeTo(null);//设置居中this.setDefaultCloseOperation(3);//设置点右上角关闭整个程序this.setVisible(true);//设置不隐藏界面}public void initView(){//1.添加用户文字Font usernameFont=new Font(null,1,16);JLabel inputtext=new JLabel("用户名");inputtext.setForeground(Color.white);inputtext.setFont(usernameFont);inputtext.setBounds(140, 55, 55, 22);this.getContentPane().add(inputtext);//2.添加用户名输入框username.setBounds(223, 46, 200, 30);this.getContentPane().add(username);//3.添加密码文字Font userPassword=new Font(null,1,16);JLabel intpupasd=new JLabel("密码");intpupasd.setForeground(Color.white);intpupasd.setFont(userPassword);intpupasd.setBounds(197, 95, 40, 22);this.getContentPane().add(intpupasd);//4.密码输入框password.setBounds(263, 87, 160, 30);this.getContentPane().add(password);//5.验证码提示Font yzmFont=new Font(null,1,16);JLabel inputYzm=new JLabel("验证码");inputYzm.setForeground(Color.white);inputYzm.setFont(yzmFont);inputYzm.setBounds(215, 142, 55, 22);this.getContentPane().add(inputYzm);//验证码输入框code.setBounds(291, 133, 100, 30);this.getContentPane().add(code);//获取正确的验证码String codeStr = CodeUtil.getCode();Font rightCodeFont = new Font(null,1,15);rightCode.setForeground(Color.red);//设置字体rightCode.setFont(rightCodeFont);//设置内容rightCode.setText(codeStr);//绑定鼠标事件rightCode.addMouseListener(this);//位置和宽高rightCode.setBounds(400, 133, 100, 30);//添加到界面this.getContentPane().add(rightCode);//6.添加登录按钮  "D:\项目IDEA\PINTU\FammerJoker\img\登录按钮.png"login.setBounds(123, 310, 128, 47);login.setIcon(new ImageIcon("FammerJoker\\img\\登录按钮.png"));//去除按钮的边框login.setBorderPainted(false);//去除按钮的背景login.setContentAreaFilled(false);//给登录按钮绑定鼠标事件login.addMouseListener(this);this.getContentPane().add(login);//7.添加注册按钮register.setBounds(256, 310, 128, 47);register.setIcon(new ImageIcon("FammerJoker\\img\\注册按钮.png"));register.setBorderPainted(false);register.setContentAreaFilled(false);register.addMouseListener(this);this.getContentPane().add(register);//8.添加背景图片 "D:\项目IDEA\PINTU\FammerJoker\img\background.png"JLabel background = new JLabel(new ImageIcon("FammerJoker\\img\\background.png"));background.setBounds(0, 0, 633, 423);this.getContentPane().add(background);}@Overridepublic void mouseClicked(MouseEvent e) {Object obj = e.getSource();if (obj == login) {//获取两个文本输入框中的内容String usernameInput = username.getText();String passwordInput = password.getText();//获取用户输入的验证码String codeInput = code.getText();//判断验证码是否为空if (codeInput.length() == 0) {showJDialog("验证码不能为空");return;}//判断用户名和密码是否为空if (usernameInput.length() == 0 || passwordInput.length() == 0) {showJDialog("用户名或者密码为空");return;}//判断验证码是否正确if (!codeInput.equalsIgnoreCase(rightCode.getText())) {showJDialog("验证码输入错误");return;}//判断集合中是否包含当前用户对象//其实就是验证用户名和密码是否相同//contains底层是依赖equals方法判断的,所以需要重写equals方法User userInfo = new User(usernameInput, passwordInput);if (alluser.contains(userInfo)) {//关闭当前登录界面this.setVisible(false);//打开游戏的主界面new GameJFrame();} else {showJDialog("用户名或密码错误");}} else if (obj == register) {System.out.println("点击了注册按钮");} else if (obj == rightCode) {//获取一个新的验证码String code = CodeUtil.getCode();rightCode.setText(code);}}//展示弹框public void showJDialog(String content) {//创建一个弹框对象JDialog jDialog = new JDialog();//给弹框设置大小jDialog.setSize(200, 150);//让弹框置顶jDialog.setAlwaysOnTop(true);//让弹框居中jDialog.setLocationRelativeTo(null);//弹框不关闭永远无法操作下面的界面jDialog.setModal(true);//创建Jlabel对象管理文字并添加到弹框当中JLabel warning = new JLabel(content);warning.setBounds(0, 0, 200, 150);jDialog.getContentPane().add(warning);//让弹框展示出来jDialog.setVisible(true);}//按下不松@Overridepublic void mousePressed(MouseEvent e) {if (e.getSource() == login) {login.setIcon(new ImageIcon("FammerJoker\\img\\登录按下.png"));} else if (e.getSource() == register) {register.setIcon(new ImageIcon("FammerJoker\\img\\注册按下.png"));}}//松开按钮@Overridepublic void mouseReleased(MouseEvent e) {if (e.getSource() == login) {login.setIcon(new ImageIcon("FammerJoker\\img\\登录按钮.png"));} else if (e.getSource() == register) {register.setIcon(new ImageIcon("FammerJoker\\img\\注册按钮.png"));}}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}}

2.效果图展示

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

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

相关文章

MongoDB复制集实战及原理分析

文章目录 MongoDB复制集复制集架构三节点复制集模式PSS模式&#xff08;官方推荐模式&#xff09;PSA模式 典型三节点复制集环境搭建复制集注意事项环境准备配置复制集复制集状态查询使用mtools创建复制集安全认证复制集连接方式 复制集成员角色属性一&#xff1a;Priority 0属…

【数据分享】1929-2023年全球站点的逐月降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 之前我们分享过1929-2023年全球气象站点的逐月平均气温数据、逐月最高气温数据…

【鸿蒙】大模型对话应用(四):页面发起请求实现对话能力

Demo介绍 本demo对接阿里云和百度的大模型API&#xff0c;实现一个简单的对话应用。 DecEco Studio版本&#xff1a;DevEco Studio 3.1.1 Release HarmonyOS SDK版本&#xff1a;API9 关键点&#xff1a;ArkTS、ArkUI、UIAbility、网络http请求、列表布局、层叠布局 定义接…

C#(C Sharp)学习笔记_前言及Visual Studio Code配置C#运行环境【一】

前言 这可以说是我第一次正式的踏入C#的学习道路&#xff0c;我真没想过我两年前是怎么跳过C#去学Unity3D游戏开发的&#xff08;当然了&#xff0c;游戏开发肯定是没有成功的&#xff0c;都是照搬代码&#xff09;。而现在&#xff0c;我真正地学习一下C#&#xff0c;就和去年…

笔记本从零安装ubuntu系统(2):环境配置

文章目录 前言相关链接ubuntu Server 安装教程屏幕自动息屏关上盖子不休眠MobaXterm外网SSH内网穿透IPV6远程 为什么我要笔记本装Linux为什么要换ubuntu Server版能否连接wifi之后Linux 配置清单总结 前言 之前装了个ubuntu desktop 版&#xff0c;发现没有命令行&#xff0c;…

HiveSQL题——collect_set()/collect_list()聚合函数

一、collect_set() /collect_list()介绍 collect_set()函数与collect_list()函数属于高级聚合函数&#xff08;行转列&#xff09;&#xff0c;将分组中的某列转换成一个数组返回&#xff0c;常与concat_ws()函数连用实现字段拼接效果。 collect_list&#xff1a;收集并形成lis…

QEMU源码全解析 —— 内存虚拟化(2)

接前一篇文章&#xff1a; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 QEMU内存管理模型 特此致谢&#xff01; QEMU内存初始化 1. 基本结构 在开始介绍内存初始化…

springboot153相亲网站

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

预充电阻原理作用,直流预充电电路设计指南

最初将电池连接到具有容性输入的负载时&#xff0c;当负载电容充电至电池电压时&#xff0c;会出现电流涌入。 对于大型电池&#xff08;具有低源电阻&#xff09;和强大的负载&#xff08;输入端具有大电容器&#xff09;&#xff0c;浪涌电流可以很容易地达到 1000 A 的峰值。…

Ps:自动对齐图层

Ps菜单&#xff1a;编辑/自动对齐图层 Edit/Auto-Align Layers 自动对齐图层 Auto-Align Layers命令通过分析选中图层上的图像&#xff0c;识别出图像间的共同特征点&#xff08;如边缘、纹理或特定标记等&#xff09;&#xff0c;然后基于这些特征点变换&#xff08;移动、旋转…

阻塞队列(超详细易懂)

目录 一、阻塞队列 1.阻塞队列概述 2.生产者消费者模型 3.阻塞队列的作用 4.标准库中的阻塞队列类 5.例子&#xff1a;简单生产者消费者模型 二、阻塞队列模拟实现 1.实现循环队列&#xff08;可跳过&#xff09; 1.1简述环形队列 1.2代码实现 2.实现阻塞队列 2.1实…

探索前端开发框架:React、Angular 和 Vue 的对决(一)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

webpack配置

一、很多基础方面的配置被vuecli所集成一般项目都是使用vuecli,不会真正的去从0-1进行webpack配置: 1、vuecli中的webpack基础配置: (1)入口文件默认在src/main;输出在dist; (2)集成了大量的插件和加载器:babel-loader 处理 JavaScript 文件、使用 css-loader 和 style-load…

基于控制台的购书系统(Java 语言实现)

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》|《数据结构与算法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢…

C++棋类小游戏2

今天给大家带来我花了1周时间自创的小游戏的升级版&#xff0c;博主还是一名小学生&#xff0c;希望大家提提意见。这是我写的最长的C代码&#xff0c;希望大家喜欢&#xff0c;不要抄袭&#xff0c;任何编译器都可以。 以前版本——C自创棋类小游戏-CSDN博客 C内容提示&…

苹果CMS挖片网升级版视频主题模版源码

自适应视频站正版高级挖片网收录模板&#xff0c;模板不错&#xff0c;是挖片网的升级版。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88799583 更多资源下载&#xff1a;关注我。

解决maven 在IDEA 下载依赖包速度慢的问题

1.idea界面双击shift键 2.打开setting.xml文件 复制粘贴 <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sc…

深度学习实战 | 卷积神经网络LeNet手写数字识别(带手写板GUI界面)

引言 在深度学习领域&#xff0c;卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种广泛应用于图像识别任务的神经网络结构。LeNet是一种经典的CNN结构&#xff0c;被广泛应用于基础的图像分类任务。本文将介绍如何使用LeNet卷积神经网络实现手写…

(已解决)spingboot 后端发送QQ邮箱验证码

打开QQ邮箱pop3请求服务&#xff1a;&#xff08;按照QQ邮箱引导操作&#xff09; 导入依赖&#xff08;不是maven项目就自己添加jar包&#xff09;&#xff1a; <!-- 邮件发送--><dependency><groupId>org.springframework.boot</groupId><…

vite打包原理

vite 工程化开发&#xff1a;打包工具 启动速度很快 核心原理还是webpack 把webpack封装了&#xff0c;把webpack对象封装了 和vue2整体结构几乎一致 webpack两种模式&#xff1a;开发&生产 代码打包编译&#xff0c;本地起一个web服务器实时预览编译后的结果 build 命令模…