实例介绍
【实例截图】
如果运行时 菜单 或者 按钮 出现乱码 请在【 Run>>Edit Configrations>>VM Options】 增加 -Dfile.encoding=GB18030 ,具体配置见下图
【核心代码】
package banksystem.demo;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.util.Arrays;
import javax.swing.JDesktopPane;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
public class MainFrame extends JFrame {
private static final JDesktopPane DESKTOP_PANE = new JDesktopPane();
private static int UserId = 0;
private JFrame mainFrame;
private JTable table;
private AccountTableModel accountModel;
public MainFrame() {
super("这是主窗体");
mainFrame = this;
// 菜单设置
JMenuBar menuBar = new JMenuBar();
this.setJMenuBar(menuBar);
JMenu reg = new JMenu("注册用户");
JMenu edit = new JMenu("编辑用户");
JMenu delete = new JMenu("删除用户");
JMenu saveortake = new JMenu("存取款");
JMenu bankstatement = new JMenu("查看流水");
JMenuItem item1 = new JMenuItem("存入");
JMenuItem item2 = new JMenuItem("取出");
Button btn1 = new Button("存款");
item1.add(btn1);
Button btn2 = new Button("取款");
item2.add(btn2);
saveortake.add(item1);
saveortake.add(item2);
menuBar.add(reg);
menuBar.add(edit);
menuBar.add(delete);
menuBar.add(saveortake);
menuBar.add(bankstatement);
accountModel = new AccountTableModel();
table = new JTable(accountModel);
JScrollPane jsp = new JScrollPane(table);
jsp.setVisible(true);
this.add(jsp);
// this.getContentPane().add(DESKTOP_PANE);
this.setTitle("银行管理系统");
this.setSize(400, 200);
this.setBounds((BankSystem.width - BankSystem.windowsWedth) / 2,
(BankSystem.height - BankSystem.windowsHeight) / 2, BankSystem.windowsWedth - 150,
BankSystem.windowsHeight - 150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
reg.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 注册界面布局
JFrame frame = new JFrame();
frame.setTitle("注册界面");
frame.setSize(500, 200);
frame.setBounds((BankSystem.width - BankSystem.windowsWedth) / 2,
(BankSystem.height - BankSystem.windowsHeight) / 2, BankSystem.windowsWedth,
BankSystem.windowsHeight);
frame.setLayout(new BorderLayout());
frame.setVisible(true);
JPanel panelFirst = new JPanel();// 存放用户名密码
JPanel panelSecond = new JPanel();// 存放按钮
panelFirst.setLayout(new GridLayout(22, 22));
JLabel userLabel = new JLabel("用户名");
JLabel passLabel = new JLabel("密码");
JLabel telLabel = new JLabel("电话");
JTextField userText = new JTextField();
JTextField passText = new JTextField();
JTextField telText = new JTextField();
panelFirst.add(userLabel);
panelFirst.add(userText);
panelFirst.add(passLabel);
panelFirst.add(passText);
panelFirst.add(telLabel);
panelFirst.add(telText);
panelSecond.setLayout(new FlowLayout());
Button reg = new Button("注册");
Button cancel = new Button("取消");
panelSecond.add(reg);
panelSecond.add(cancel);
frame.add(panelSecond, BorderLayout.SOUTH);
frame.add(panelFirst, BorderLayout.NORTH);
/*
* JDialog jdlg = new JDialog(frame, "son", true);// 最后一个参数 true
* // 为模态 jdlg.setTitle("注册界面"); jdlg.setSize(500, 200);
* jdlg.setBounds((BankSystem.width - BankSystem.windowsWedth) /
* 2, (BankSystem.height - BankSystem.windowsHeight) / 2,
* BankSystem.windowsWedth, BankSystem.windowsHeight);
* jdlg.setLayout(new BorderLayout()); jdlg.setVisible(true);
*/
// 注册事件
reg.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String userName = userText.getText();
String passWord = passText.getText();
String telPhone = telText.getText();
AccountModel newAccount = new AccountModel(BankSystem.accountLst.size() 1, userName, passWord,
telPhone, 0.00, false);
BankSystem.accountLst.add(newAccount);
try {
BankSystem.WriteFile(BankSystem.path, newAccount.toString(), true, false);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
JOptionPane.showMessageDialog(null, "保存成功");
accountModel.setDataSource(BankSystem.accountLst);
}
});
cancel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
frame.dispose();
}
});
}
});
edit.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int rowId = table.getSelectedRow();
if (rowId < 0) {
JOptionPane.showMessageDialog(null, "请选择一行", "警告", JOptionPane.ERROR_MESSAGE);
return;
}
// 注册界面布局
JFrame frame = new JFrame();
frame.setTitle("注册界面");
frame.setSize(500, 200);
frame.setBounds((BankSystem.width - BankSystem.windowsWedth) / 2,
(BankSystem.height - BankSystem.windowsHeight) / 2, BankSystem.windowsWedth,
BankSystem.windowsHeight);
JPanel panelFirst = new JPanel();// 存放用户名密码
JPanel panelSecond = new JPanel();// 存放按钮
panelFirst.setLayout(new GridLayout(22, 22));
JLabel userLabel = new JLabel("用户名");
JLabel passLabel = new JLabel("密码");
JLabel telLabel = new JLabel("电话");
JTextField userText = new JTextField();
JTextField passText = new JTextField();
JTextField telText = new JTextField();
panelFirst.add(userLabel);
panelFirst.add(userText);
panelFirst.add(passLabel);
panelFirst.add(passText);
panelFirst.add(telLabel);
panelFirst.add(telText);
panelSecond.setLayout(new FlowLayout());
Button save = new Button("保存");
Button cancel = new Button("取消");
panelSecond.add(save);
panelSecond.add(cancel);
frame.setLayout(new BorderLayout());
frame.add(panelSecond, BorderLayout.SOUTH);
frame.add(panelFirst, BorderLayout.NORTH);
frame.setVisible(true);
userText.setText(table.getValueAt(rowId, 1).toString());
passText.setText(table.getValueAt(rowId, 2).toString());
telText.setText(table.getValueAt(rowId, 3).toString());
UserId = Integer.parseInt(table.getValueAt(rowId, 0).toString());
// 保存事件
save.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String userName = userText.getText();
String passWord = passText.getText();
String telPhone = telText.getText();
AccountModel account = new AccountModel();
for (int i = 0; i < BankSystem.accountLst.size(); i ) {
if (BankSystem.accountLst.get(i).getId() == UserId) {
account = BankSystem.accountLst.get(i);
BankSystem.accountLst.remove(account);
break;
}
}
account.setId(UserId);
account.setUserName(userName);
account.setPwd(passWord);
account.setTelphone(telPhone);
account.setBalance(account.getBalance());
BankSystem.accountLst.add(account);
boolean isAppend = false;
boolean isNew = true;
for (AccountModel tmpAcc : BankSystem.accountLst) {
try {
BankSystem.WriteFile(BankSystem.path, tmpAcc.toString(), isAppend, isNew);
isAppend = true;
isNew = false;
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, "编辑成功");
accountModel.setDataSource(BankSystem.accountLst);
}
});
cancel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
frame.dispose();
}
});
}
});
delete.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int rowId = table.getSelectedRow();
if (rowId < 0) {
JOptionPane.showMessageDialog(null, "请选择一行", "警告", JOptionPane.ERROR_MESSAGE);
return;
}
UserId = Integer.parseInt(table.getValueAt(rowId, 0).toString());
AccountModel account = new AccountModel();
for (int i = 0; i < BankSystem.accountLst.size(); i ) {
if (BankSystem.accountLst.get(i).getId() == UserId) {
account = BankSystem.accountLst.get(i);
BankSystem.accountLst.remove(account);
break;
}
}
accountModel.setDataSource(BankSystem.accountLst);
boolean isAppend = false;
boolean isNew = true;
for (AccountModel tmpAcc : BankSystem.accountLst) {
try {
BankSystem.WriteFile(BankSystem.path, tmpAcc.toString(), isAppend, isNew);
isAppend = true;
isNew = false;
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
btn1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int rowId = table.getSelectedRow();
if (rowId < 0) {
JOptionPane.showMessageDialog(null, "请选择一行", "警告", JOptionPane.WARNING_MESSAGE);
return;
}
UserId = Integer.parseInt(table.getValueAt(rowId, 0).toString());
String saveMoney = JOptionPane.showInputDialog("存入多少钱");
Double money = Double.valueOf(saveMoney);
AccountModel account = new AccountModel();
for (int i = 0; i < BankSystem.accountLst.size(); i ) {
if (BankSystem.accountLst.get(i).getId() == UserId) {
account = BankSystem.accountLst.get(i);
BankSystem.accountLst.remove(account);
break;
}
}
account.setBalance(account.getBalance() money);
BankSystem.accountLst.add(account);
accountModel.setDataSource(BankSystem.accountLst);
boolean isAppend = false;
boolean isNew = true;
for (AccountModel tmpAcc : BankSystem.accountLst) {
try {
BankSystem.WriteFile(BankSystem.path, tmpAcc.toString(), isAppend, isNew);
isAppend = true;
isNew = false;
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, " 保存成功");
BankStatement.CreateBankStatement(
new BankStatementModel(account.getId(), account.getUserName(), "存入", money));
}
});
btn2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int rowId = table.getSelectedRow();
if (rowId < 0) {
JOptionPane.showMessageDialog(null, "请选择一行", "警告", JOptionPane.WARNING_MESSAGE);
return;
}
UserId = Integer.parseInt(table.getValueAt(rowId, 0).toString());
String saveMoney = JOptionPane.showInputDialog("取出多少钱");
Double money = Double.valueOf(saveMoney);
AccountModel account = new AccountModel();
for (int i = 0; i < BankSystem.accountLst.size(); i ) {
if (BankSystem.accountLst.get(i).getId() == UserId) {
account = BankSystem.accountLst.get(i);
BankSystem.accountLst.remove(account);
break;
}
}
if (account.getBalance() < money) {
JOptionPane.showMessageDialog(null, "取出的金额比余额要多", "警告", JOptionPane.ERROR_MESSAGE);
return;
}
account.setBalance(account.getBalance() - money);
BankSystem.accountLst.add(account);
accountModel.setDataSource(BankSystem.accountLst);
boolean isAppend = false;
boolean isNew = true;
for (AccountModel tmpAcc : BankSystem.accountLst) {
try {
BankSystem.WriteFile(BankSystem.path, tmpAcc.toString(), isAppend, isNew);
isAppend = true;
isNew = false;
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, "保存成功");
BankStatement.CreateBankStatement(
new BankStatementModel(account.getId(), account.getUserName(), "取出", money));
}
});
bankstatement.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// BankStatementFrame frame=new BankStatementFrame();
JFrame frame = new JFrame();
BankStatementTableModel bankStatementTableModel = new BankStatementTableModel();
JTable subTable = new JTable(bankStatementTableModel);
JScrollPane jsp = new JScrollPane(subTable);
jsp.setVisible(true);
frame.add(jsp);
// this.getContentPane().add(DESKTOP_PANE);
frame.setTitle("银行管理系统");
frame.setSize(400, 200);
frame.setBounds((BankSystem.width - BankSystem.windowsWedth) / 2,
(BankSystem.height - BankSystem.windowsHeight) / 2, BankSystem.windowsWedth - 150,
BankSystem.windowsHeight - 150);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


支持(0) 盖楼(回复)
支持(0) 盖楼(回复)