import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import atm.Card;
//测试类
public class Exec {
public static void main(String[] args) {
// 创建窗体类变量
DemoWindow dw = new DemoWindow();
// 设置窗体为最大化显示方式
Toolkit theKit = dw.getToolkit();
Dimension wndSize = theKit.getScreenSize();
dw.setBounds(0, 0, wndSize.width, wndSize.height);
// 点击关闭按钮可以退出程序
dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗体为可见
dw.setVisible(true);
}
}
// ATM机窗体
class DemoWindow extends JFrame {
// 显示不同步骤界面的主面板
JPanel jp = new JPanel();
// 卡片布局管理器
CardLayout cl = new CardLayout();
// 欢迎主界面面板
MainPanel mp = new MainPanel(this);
// 选择银行卡类型的面板
TypeChoosingPanel tcp = new TypeChoosingPanel(this);
// 输入密码的面板
PasswordPanel pp = new PasswordPanel(this);
// 选择操作内容的面板
OperationPanel op = new OperationPanel(this);
// 取款面板
WithDrawingPanel wp = new WithDrawingPanel(this);
// 存款面板
DepositPanel dp = new DepositPanel(this);
// 查询余额的面板
QueryPanel qp = new QueryPanel(this);
// 当前银行卡的类变量
private Card card;
// 构造函数
public DemoWindow() {
// 窗体布局,采用卡片布局管理器,在同一个窗体上显示各个不同步骤的界面面板
jp.setLayout(cl);
jp.add("1", mp);
jp.add("2", tcp);
jp.add("3", pp);
jp.add("4", op);
jp.add("4", wp);
jp.add("5", dp);
jp.add("6", qp);
add(jp);
}
// 显示下一步骤的界面面板
public void nextStep() {
cl.next(jp);
}
// 显示第一步骤的界面面板
public void firstStep() {
cl.first(jp);
}
// 显示上一步骤的界面面板
public void previousStep() {
cl.previous(jp);
}
// 当前银行卡类变量的读取函数
public Card getCard() {
return card;
}
// 当前银行卡类变量的设置函数
public void setCard(Card card) {
this.card = card;
}
}
// 欢迎主界面的面板类
class MainPanel extends JPanel implements ActionListener {
// 标题
ImageLabel jl = new ImageLabel("欢迎使用ATM!");
// 输入卡号的文本框
ImageTextField jtf = new ImageTextField(20);
// 布局面板
ImagePanel jp1 = new ImagePanel();
ImagePanel jp2 = new ImagePanel();
ImagePanel jp3 = new ImagePanel();
ImagePanel jp4 = new ImagePanel();
ImagePanel jp5 = new ImagePanel();
// ATM机窗体的引用
DemoWindow dw;
// 构造函数
public MainPanel(DemoWindow dw) {
// 设置ATM机窗体的引用
this.dw = dw;
// 面板布局
setLayout(new GridLayout(5, 1));
jl.setForeground(Color.yellow);
jp2.add(jl);
jp4.add(jtf);
add(jp1);
add(jp2);
add(jp3);
add(jp4);
add(jp5);
// 添加事件监听器
jtf.addActionListener(this);
}
// 响应文本框输入完毕
public void actionPerformed(ActionEvent e) {
// 获取具有对应卡号的银行卡类变量
Card card = Card.getCardByCardID(jtf.getText());
// 如果存在该银行卡
if (card != null) {
// 设置当前银行卡的类变量,以供下面步骤使用
dw.setCard(card);
// 显示下一步骤界面
dw.nextStep();
}
// 如果不存在该银行卡
else {
// 显示错误信息,并允许重新输入
JOptionPane.showMessageDialog(this, "请输入正确的卡号!");
jtf.setText("");
}
}
// 重写的绘图方法,在每次重绘界面时,都自动清空文本框的内容,并设置文本框得到输入焦点
protected void paintComponent(Graphics g) {
super.paintComponent(g);
jtf.setText("");
jtf.requestFocus();
}
}
// 选择银行卡类型的面板类
class TypeChoosingPanel extends JPanel implements ActionListener {
// 标题
ImageLabel jl = new ImageLabel("请选择银行卡类型!");
// 操作按钮
ImageButton jb1 = new ImageButton("借记卡");
ImageButton jb2 = new ImageButton("信用卡");
ImageButton jb3 = new ImageButton("退出");
// 布局面板
ImagePanel jp1 = new ImagePanel();
ImagePanel jp2 = new ImagePanel();
ImagePanel jp3 = new ImagePanel();
ImagePanel jp4 = new ImagePanel();
ImagePanel jp5 = new ImagePanel();
ImagePanel jp31 = new ImagePanel();
ImagePanel jp32 = new ImagePanel();
ImagePanel jp33 = new ImagePanel();
ImagePanel jp41 = new ImagePanel();
ImagePanel jp42 = new ImagePanel();
ImagePanel jp43 = new ImagePanel();
ImagePanel jp44 = new ImagePanel();
// ATM机窗体的引用
DemoWindow dw;
// 构造函数
public TypeChoosingPanel(DemoWindow dw) {
// 设置ATM机窗体的引用
this.dw = dw;
// 面板布局
setLayout(new BorderLayout());
// 添加标题
jl.setForeground(Color.yellow);
jp2.add(jl);
// 添加左面的操作按钮
jp3.setLayout(new GridLayout(5, 1));
jp3.add(jp31);
jp3.add(jb1);
jp3.add(jp32);
jp3.add(jb2);
jp3.add(jp33);
jp3.setPreferredSize(new Dimension(200, 100));
// 添加右面的操作按钮
jp4.setLayout(new GridLayout(5, 1));
jp4.add(jp41);
jp4.add(jb3);
jp4.add(jp42);
jp4.add(jp43);
jp4.add(jp44);
jp4.setPreferredSize(new Dimension(200, 100));
add(jp1, BorderLayout.NORTH);
add(jp2, BorderLayout.CENTER);
add(jp3, BorderLayout.WEST);
add(jp4, BorderLayout.EAST);
add(jp5, BorderLayout.SOUTH);
// 添加事件监听器
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
}
// 响应单击按钮
public void actionPerformed(ActionEvent e) {
// 处理选择借记卡
if (e.getSource() == jb1) {
// 如果当前银行卡是借记卡,显示下一步骤界面
if (dw.getCard().checkType(Card.CardType.借记卡))
dw.nextStep();
// 如果不是,显示错误信息,并回到欢迎主界面面板
else {
JOptionPane.showMessageDialog(this, "银行卡类型不正确!\n请重新输入卡号!");
dw.setCard(null);
dw.firstStep();
}
}
// 处理选择信用卡
else if (e.getSource() == jb2) {
// 如果当前银行卡是信用卡,显示下一步骤界面
if (dw.getCard().checkType(Card.CardType.信用卡))
dw.nextStep();
// 如果不是,显示错误信息,并回到欢迎主界面面板
else {
JOptionPane.showMessageDialog(this, "银行卡类型不正确!\n请重新输入卡号!");
dw.setCard(null);
dw.firstStep();
}
}
// 处理退出操作
else if (e.getSource() == jb3) {
// 释放当前银行卡类变量,回到欢迎主界面面板
dw.setCard(null);
dw.firstStep();
}
}
}
// 输入密码的面板类
class PasswordPanel extends JPanel implements ActionListener {
// 标题
ImageLabel jl = new ImageLabel("请输入密码!");
// 密码框
JPasswordField jpf = new JPasswordField(10);
// 布局面板
ImagePanel jp1 = new ImagePanel();
ImagePanel jp2 = new ImagePanel();
ImagePanel jp3 = new ImagePanel();
ImagePanel jp4 = new ImagePanel();
ImagePanel jp5 = new ImagePanel();
ImagePanel jp21 = new ImagePanel();
ImagePanel jp22 = new ImagePanel();
ImagePanel jp221 = new ImagePanel();
// 数字操作按钮
ImageButton[] jbs = new ImageButton[12];
// ATM机窗体的引用
DemoWindow dw;
// 构造函数
public PasswordPanel(DemoWindow dw) {
// 设置ATM机窗体的引用
this.dw = dw;
// 面板布局
setLayout(new BorderLayout());
// 添加标题
jl.setForeground(Color.yellow);
jp1.add(jl);
jp2.setLayout(new BorderLayout());
// 添加密码框
jpf.setEchoChar('*');
jpf.setFont(new Font("黑体", Font.BOLD, 72));
jp21.add(jpf);
jp2.add(jp21, BorderLayout.NORTH);
// 添加数字操作按钮
jp221.setLayout(new GridLayout(4, 3));
// 创建0到9十个数字按钮
for (int i = 0; i < jbs.length - 2; i++) {
jbs[i] = new ImageButton(String.valueOf(i));
jbs[i].addActionListener(this);
jp221.add(jbs[i]);
}
// 创建“确认”和“重输”按钮
jbs[jbs.length - 2] = new ImageButton("确认");
jbs[jbs.len
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
java通用范例开发金典程序源代码(2).tar.gz (603个子文件)
computer.au 21KB
ha.au 3KB
Exec.class 2KB
mm_health_nutr.css 2KB
edit.css 1KB
pop.css 300B
Thumbs.db 5KB
Thumbs.db 5KB
jdic.dll 120KB
tray.dll 56KB
stu.dtd 161B
stu.dtd 161B
IeEmbed.exe 60KB
background.gif 176KB
wybj2_638_03.gif 85KB
swing.gif 67KB
wybj2_638_04.gif 32KB
wybj2_638_01.gif 21KB
wybj2_638_02.gif 16KB
T10.gif 13KB
T8.gif 12KB
T4.gif 12KB
T3.gif 11KB
T2.gif 11KB
T1.gif 11KB
T5.gif 10KB
T9.gif 10KB
T7.gif 8KB
top.gif 8KB
T6.gif 8KB
player2.gif 3KB
player1.gif 3KB
tdbg.gif 2KB
struts-power.gif 2KB
searchb.gif 2KB
female.gif 2KB
male.gif 1KB
mode.view.gif 1KB
help.gif 1KB
mov.gif 1KB
swf.gif 1KB
wmv.gif 1KB
Help.gif 1002B
mode.design.gif 1001B
java.gif 926B
fopen.gif 917B
doc.gif 909B
fclose.gif 898B
pnode.gif 885B
mnode.gif 880B
node.gif 853B
vertline.gif 849B
lastnode.gif 849B
rm.gif 573B
ad.gif 560B
wlink.gif 417B
plus.gif 395B
split.gif 390B
upload.gif 384B
paste.gif 380B
table.gif 367B
copy.gif 364B
code.gif 343B
insertpage.gif 338B
cut.gif 336B
undo.gif 331B
redo.gif 329B
img.gif 280B
text.gif 269B
minus.gif 237B
delete.gif 227B
fgcolor.gif 216B
selectAll.gif 213B
desktop.gif 204B
fbcolor.gif 200B
inputbg.gif 152B
cleancode.gif 138B
numlist.gif 136B
outdent.gif 131B
bullist.gif 131B
indent.gif 131B
mode.html.gif 130B
quote.gif 129B
save.gif 122B
insertcolumn.gif 116B
removeFormat.gif 114B
deleterow.gif 113B
deletecolumn.gif 111B
insertrow.gif 108B
underline.gif 102B
replace.gif 97B
unlink.gif 94B
italic.gif 93B
hr.gif 84B
bold.gif 82B
superscript.gif 77B
strikethrough.gif 76B
subscript.gif 76B
aleft.gif 66B
center.gif 66B
共 603 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
liuyanyang1989
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功