package star;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.border.LineBorder;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
public class LoginFrame {
JFrame jf_login = new JFrame("星座运势 - 用户登录");//登陆界面主窗体
ImageJPanel jp_login = new ImageJPanel();//带有背景图片的Panel
JLabel jl_username = new JLabel("用户名:");//用户名标签
JLabel jl_password = new JLabel("密 码:");//密码标签
JLabel jl_code = new JLabel("验证码:");//验证码标签
JLabel jl_code_show = new JLabel();//验证码显示区标签
JLabel jl_reg = new JLabel("注册帐号");//注册帐号标签
JLabel jl_reset_password = new JLabel("找回密码");//找回密码标签
JTextField jtf_username = new JTextField();//用户名输入文本框
JTextField jtf_password = new JTextField();//密码输入文本框
JTextField jtf_code = new JTextField();//验证码输入文本框
JButton jb_login = new JButton("登陆");//登陆按钮
JButton jb_cancel = new JButton("取消");//取消退出按钮
String code;//存储验证码
int screenWith;//屏幕分辨率的宽
int scrennHeight;//屏幕分辨率的高
//构造器,空布局
public LoginFrame() {
jf_login.setSize(409, 332); //设置窗体大小
screenWith = Toolkit.getDefaultToolkit().getScreenSize().width;//获得屏幕分辨率的宽
scrennHeight = Toolkit.getDefaultToolkit().getScreenSize().height;//得到屏幕分辨率的高
jf_login.setLocation((screenWith - jf_login.getWidth()) / 2, (scrennHeight - jf_login.getHeight()) / 2);//窗体在全局居中
// jf_login.setUndecorated(true);//去掉窗体的装饰(禁用标题栏,外边框等)
jf_login.add(jp_login);//添加自定义带背景图片的Panel到窗体
jp_login.setLayout(null);//设置Panel为空布局,添加到Panel里面的控件才能使用setBounds()方法进行精确定位,这样才能做得精确布局
jp_login.add(jl_username);//添加用户名标签到Panel
jp_login.add(jl_password);//添加密码标签到Panel
jp_login.add(jl_code);//添加验证码标签到Panel
jp_login.add(jl_code_show);//添加验证码显示区到Panel
jp_login.add(jl_reg);//添加注册标签到Panel
jp_login.add(jl_reset_password);//添加找回密码标签到Panel
jp_login.add(jtf_username);//添加用户名输入框到Panel
jp_login.add(jtf_password);//添加密码输入框到Panel
jp_login.add(jtf_code);//添加验证码输入框到Panel
jp_login.add(jb_login);//添加登陆按钮到Panel
jp_login.add(jb_cancel);//添加取消按钮到Panel
jl_username.setBounds(120, 40, 50, 20);//精确定位用户名标签
jl_password.setBounds(120, 70, 50, 20);//精确定位密码标签
jl_code.setBounds(120, 100, 50, 20);//精确定位验证码标签
jtf_username.setBounds(180, 40, 150, 20);//精确定位用户名输入框
jtf_password.setBounds(180, 70, 150, 20);//精确定位密码输入框
jtf_code.setBounds(180, 100, 50, 20);//精确定位验证码输入框
jl_code_show.setBounds(240, 100, 30, 20);//精确定位验证码显示区
jl_code_show.setOpaque(true);//设置验证码显示区不透明,这样才能使设置的背景色可见
jl_code_show.setBackground(Color.YELLOW);//设置验证码显示区背景颜色
jl_code_show.setForeground(Color.RED);//设置验证码显示区字体为蓝色
code = (int)(Math.random() * 9000 + 1000) + "";//生成随机的四位纯数字的验证码
jl_code_show.setText(code);//设置生成的验证码到验证码显示区
jl_code_show.setCursor(new Cursor(Cursor.HAND_CURSOR));//设置验证码显示区的鼠标指针为手型
jb_login.setBounds(140, 140, 60, 25);//登陆按钮精确定位
jb_cancel.setBounds(250, 140, 60, 25);//取消按钮精确定位
jl_reg.setBounds(220, 185, 55, 20);//精确定位注册帐号标签
jl_reg.setForeground(Color.BLUE);//设置注册帐号标签字体为蓝色
jl_reg.setCursor(new Cursor(Cursor.HAND_CURSOR));//设置注册帐号标签的鼠标指针为手型
jl_reset_password.setBounds(280, 185, 55, 20);//精确定位找回密码标签
jl_reset_password.setForeground(Color.BLUE);//设置找回密码标签字体为蓝色
jl_reset_password.setCursor(new Cursor(Cursor.HAND_CURSOR));//设置找回密码标签的鼠标指针为手型
// jl_username.setBorder(new LineBorder(Color.RED));//为用户名标签设置红色边框,以便设置该标签的规格(宽和高)
// jl_password.setBorder(new LineBorder(Color.RED));//为密码标签设置红色边框,以便设置该标签的规格(宽和高)
// jl_code.setBorder(new LineBorder(Color.RED));//为密码标签设置红色边框,以便设置该标签的规格(宽和高)
// jl_reg.setBorder(new LineBorder(Color.RED));//为注册帐号标签设置红色边框,以便设置该标签的规格(宽和高)
jf_login.setVisible(true);//设置可见
jf_login.setResizable(false);//不允许改变窗体大小
jf_login.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置用户在此窗体上发起 "close" 时默认执行的操作
//为验证码显示区添加鼠标事件监听器
jl_code_show.addMouseListener(new MouseAdapter() {
//鼠标点击事件:鼠标点击时重新生成验证码
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
code = (int)(Math.random() * 9000 + 1000) + "";//生成随机的四位纯数字的验证码
jl_code_show.setText(code);//设置生成的验证码到验证码显示区
}
});
//为取消按钮添加事件监听器
jb_cancel.addActionListener(new ActionListener() {
//按钮点击后退出系统
public void actionPerformed(ActionEvent e) {
//弹出询问对话框,点击"确定"按钮后退出系统
int r = JOptionPane.showConfirmDialog(jf_login, "您确定要退出登陆吗?", "温馨提示", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if(r == 0) {
System.exit(0);
}
}
});
//为登陆按钮添加事件监听器
jb_login.addActionListener(new ActionListener() {
//登陆逻辑
public void actionPerformed(ActionEvent e) {
//请在这里写登陆逻辑
JOptionPane.showConfirmDialog(jf_login, "请添加登陆逻辑!", "温馨提示", JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE);
}
});
//为注册帐号标签添加鼠标监听器
jl_reg.addMouseListener(new MouseAdapter() {
//鼠标点击事件
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
JOptionPane.showConfirmDialog(jf_login, "请添加注册帐号逻辑!", "温馨提示", JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE);
}
});
//为找回密码标签添加鼠标监听器
jl_reset_password.addMouseListener(new MouseAdapter() {
//鼠标点击事件
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
JOptionPane.showConfirmDialog(jf_login, "请添加找回密码逻辑!", "温馨提示", JOptionPane.CLOSED_OPTION, JOptionPane.INFORMATION_MESSAGE);
}
});
//添加此监听器用于探测鼠标在Panel上的具体坐标,以便精确布局
// jp_login.addMouseMotionListener(new MouseMotionAdapter() {
// @Override
// public void mouseMoved(MouseEvent e) {
//
// jf_login.setTitle("鼠标当前位置:(" + e.getX() + ", " + e.getY() + ")");
// }
// });
} //构造器结束
//程序执行入口
public static void main(String[] args) {
LoginFrame fm = new LoginFrame();
}
}
star.rar_源码
版权申诉
194 浏览量
2022-09-22
22:04:42
上传
评论
收藏 3KB RAR 举报
alvarocfc
- 粉丝: 111
- 资源: 1万+
最新资源
- 基于Javascript和Python的微商城项目设计源码 - MicroMall
- 基于Java的网上订餐系统设计源码 - online ordering system
- 基于Javascript的超级美眉网络资源管理应用模块设计源码
- 基于Typescript和PHP的编程知识储备库设计源码 - study-php
- Screenshot_2024-05-28-11-40-58-177_com.tencent.mm.jpg
- 基于Dart的Flutter小提琴调音器APP设计源码 - violinhelper
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
- 基于Vue和微信小程序的监理日志系统设计源码 - supervisionLog
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈