@Override
public void actionPerformed(ActionEvent e) {
// 获取输入的账号和密码
String userName = jtf.getText();
String userPassword = new String(jpf.getPassword());
// 验证是否正确
boolean aBoolean = atm.login(userName, userPassword);
if (aBoolean) {
// 登录成功
dispose();// 关闭登录界面
// 打开功能界面
new WorkingJFrame();
} else
showMessageDialog(“账号或密码错误”);// 调用父类弹窗方法
}
});
// 添加组件
jp.add(jl1);
jp.add(jtf);
jp.add(jl2);
jp.add(jpf);
jp.add(jb);
// 窗体添加面板
add(jp);
}
public static void main(String[] args) {
new LoginJFrame();// 先创建登录界面
}
}
package atmJFrame.myJFrame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//中间窗口,存钱、取钱、转账、修改密码界面的父类
public class CentreJFrame extends MyJFrame {
// 空布局面板,自己设置组件位置及大小
protected JPanel jp = new JPanel(null);
// 输入金额标签
protected JLabel jl = new JLabel(“请输入金额:”);
// 输入金额文件框
protected JTextField jtf = new JTextField(20);
// 确认、取消按钮
protected JButton jb1 = new JButton(“确认”);
protected JButton jb2 = new JButton(“取消”);
// 转账时转账账号标签
protected JLabel jLabel = new JLabel(“请输入转账账号:”);
// 转账时转账账号文本框
protected JTextField jTextField = new JTextField(20);
// 修改密码时新密码标签
protected JLabel jLabelCP = new JLabel(“请输入新密码(只能为数字):”);
// 修改密码时新密码文本框
protected JTextField jTextFieldCP = new JTextField(20);
// 提醒用户输入金额为100的倍数
private JLabel jle = new JLabel(“( 提示:只能输入100的倍数 )”);
public CentreJFrame(String str) {
super(str);
// 判断要进行的操作
if (str.equals(“转账”))
init1();
else if (str.equals(“修改密码”))
init2();
else
init();
one();// 最后调用共有
}
// 取钱和取钱特有组件
private void init() {
// 输入金额标签,设置字体,位置及大小
jl.setFont(FONT_SIZE_25);
jl.setBounds(100, 100, 200, 100);
// 输入金额文本框
jtf.setBounds(300, 250, 200, 50);
// 添加输入金额标签和输入金额文本框
jp.add(jl);
jp.add(jtf);
setJLE();
}
// 转账特有组件
private void init1() {
init();
// 输入账户标签
jLabel.setFont(FONT_SIZE_25);
jLabel.setBounds(100, 10, 200, 40);
// 输入账户文本
jTextField.setBounds(300, 80, 200, 50);
// 添加输入账户标签和输入账户文本
jp.add(jLabel);
jp.add(jTextField);
}
// 修改密码特有组件
private void init2() {
// 输入新密码标签
jLabelCP.setFont(FONT_SIZE_25);
jLabelCP.setBounds(50, 100, 400, 70);
// 输入新密码文本框
jTextFieldCP.setBounds(300, 215, 200, 40);
// 添加输入新密码标签和输入新密码文本框
jp.add(jLabelCP);
jp.add(jTextFieldCP);
}
// 共有组件及操作
private void one() {
// 按钮设置
jb1.setFont(FONT_SIZE_20);
jb2.setFont(FONT_SIZE_20);
jb1.setBounds(300, 350, 100, 50);
jb2.setBounds(450, 350, 100, 50);
jp.add(jb1);
jp.add(jb2);
jp.setBackground(Color.GREEN);
jb1.addActionListener(listener);
jb2.addActionListener(listener);
// 添加到窗体
add(jp);
setVisible(true);
}
// 设置提示
private void setJLE() {
jle.setFont(FONT_SIZE_10);
jle.setBounds(100, 180, 300, 50);
jp.add(jle);
}
// 创建监听器
private ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {// 按钮被点击后
String actionCommand = e.getActionCommand();// 获取按钮上的字
switch (actionCommand) {
case “确认”:
change();
break;
case “取消”:
new WorkingJFrame();// 创建功能界面
dispose();// 关闭此界面
break;
}
}
};
// 点击确认按钮执行的操作,子类重写覆盖实现各自功能
protected void change() {
}
// 正则表达式判断输入是否为数字
protected boolean isNumber(String str) {
Pattern pattern = Pattern.compile(“[0-9]*”);
Matcher isNum = pattern.matcher(str);
if (!isNum.matches())
return false;
return true;
}
}
package atmJFrame.myJFrame;
//存钱界面
public class CunMoneyJFrame extends CentreJFrame {
public CunMoneyJFrame() {
super(“存钱”);
}
protected void change() {
String s = jtf.getText();
if (isNumber(s)) {
Double money = Double.parseDouble(s);
boolean b = atm.saveMoney(money);
if (b)
showMessageDialog(“您的钱钱已存入\n您的账户余额为:” + atm.getMoney1());
else
showMessageDialog(“您输入有误”);
} else
showMessageDialog(“您输入有误”);
jtf.setText(“”);
}
}
package atmJFrame.myJFrame;
//转账界面
public class GiveMoneyJFrame extends CentreJFrame {
public GiveMoneyJFrame() {
super(“转账”);
}
protected void change() {
String s = jTextField.getText();
boolean b = atm.anotherUser(s);
if (b) {
// 获取输入金额
String s1 = jtf.getText();
if (isNumber(s1)) {// 如果输入是数字
Double money = Double.parseDouble(s1);
atm.giveMoney(money);
showMessageDialog(“钱已转入\n您的账户余额为:” + atm.getMoney1());
} else
showMessageDialog(“您输入有误”);
} else
showMessageDialog(“您输入有误”);
new WorkingJFrame();// 创建功能界面
dispose();// 关闭此界面
}
}
package atmJFrame.myJFrame;
//取钱界面
public class QuMoneyJFrame extends CentreJFrame {
public QuMoneyJFrame() {
super(“取钱”);
}
protected void change() {
String s = jtf.getText();
if (isNumber(s)) {
Double money = Double.parseDouble(s);
boolean b = atm.quMoney(money);
if (b) {
showMessageDialog(“请收好您的钱\n您的账户余额为:” + atm.getMoney1());
} else
showMessageDialog(“您输入有误”);
} else
showMessageDialog(“您输入有误”);
jtf.setText(“”);
}
}
===================================================================
JavaWeb系统系列实现
Java+Springboot+Mybatis+Bootstrap实现网上商城系统
JavaSwing系统系列实现
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
Dubbo面试专题
JVM面试专题
Java并发面试专题
Kafka面试专题
MongDB面试专题
MyBatis面试专题
MySQL面试专题
Netty面试专题
RabbitMQ面试专题
Redis面试专题
Spring Cloud面试专题
SpringBoot面试专题
zookeeper面试专题
常见面试算法题汇总专题
计算机网络基础专题
设计模式专题
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
3396959502)]
Netty面试专题
[外链图片转存中…(img-jf27oheV-1713396959503)]
RabbitMQ面试专题
[外链图片转存中…(img-KxanxzNf-1713396959503)]
Redis面试专题
[外链图片转存中…(img-wv4vwyRo-1713396959503)]
Spring Cloud面试专题
[外链图片转存中…(img-X0fEmuZj-1713396959503)]
SpringBoot面试专题
[外链图片转存中…(img-Yb3dLVpW-1713396959503)]
zookeeper面试专题
[外链图片转存中…(img-AnO6xyNV-1713396959504)]
常见面试算法题汇总专题
[外链图片转存中…(img-HXzZJoeU-1713396959504)]
计算机网络基础专题
[外链图片转存中…(img-mSQwllgM-1713396959504)]
设计模式专题
[外链图片转存中…(img-wOwUO1qw-1713396959504)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!