查看“Java任务:完成商品购买并显示购物车详细信息”的源代码
←
Java任务:完成商品购买并显示购物车详细信息
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==前情回顾== 上节课我们主要实现了商品信息的查看页面,分为客户端和管理端。 客户端: [[文件:java9-2.png]] 管理端: [[文件:java9-21.png]] ==任务描述== 这节课我们在此基础上实现按钮的监听器 以客户端为例,一点击购买按钮,效果如下图所示: [[文件:java9-24.png]] 以客户端为例,一点击查看详情标签,,效果如下图所示: [[文件:java9-25.png]] <h3 >以下操作均以客户端为例,管理端与之类似。</h3> ==初始任务:添加事件监听器== 客户端: [[文件:java9-2.png]] 现在我们先尝试为窗体上的按钮添加最基本的事件处理程序。 ===为查询按钮添加事件处理程序=== 查询按钮: <nowiki>btnQuery.addActionListener(new QueryAction());</nowiki> 查询按钮的监听器(内部类): <nowiki>/** * * QueryAction:查询按钮的事件监听器 * */ private class QueryAction implements ActionListener{ public QueryAction(){ } @Override public void actionPerformed(ActionEvent e) { // 获取用户输入的账号和密码 String gName = textGoodsName.getText(); JOptionPane.showMessageDialog(null, gName, "信息", JOptionPane.INFORMATION_MESSAGE); } }</nowiki> ===为购买按钮添加事件处理程序=== 购买按钮: <nowiki>btnBuy.addActionListener(new BuyAction());</nowiki> 购买按钮的监听器: <nowiki>/** * * BuyAction:购买按钮的事件监听器 * */ private class BuyAction implements ActionListener{ public BuyAction(){ } @Override public void actionPerformed(ActionEvent e) { String gName = textGoodsName.getText(); JOptionPane.showMessageDialog(null, gName, "信息", JOptionPane.INFORMATION_MESSAGE); } }</nowiki> ==任务进阶:关联业务逻辑层(MVC)== 下面,我们对刚才这个基本的查询事件监听器改造一下,里面加上调用业务逻辑层代码的内容 这一步,需要把以前编写的dao包、entity包、service等包复制到当前工程内。 ===创建业务逻辑层对象=== 为了后台查询的方便,在窗体类的成员变量位置,创建业务逻辑层对象GoodsService和CartService,如果是管理端,光创建一个GoodsService就行了。 [[文件:java9-35.png]] ===改写查询按钮的事件处理程序=== <nowiki> /** * * QueryAction:查询按钮的事件监听器 * */ private class QueryAction implements ActionListener{ public QueryAction(){ } @Override public void actionPerformed(ActionEvent e) { // 获取用户输入的账号和密码 String gID = textGoodsID.getText(); //JOptionPane.showMessageDialog(null, gID, "信息", JOptionPane.INFORMATION_MESSAGE); Goods mygoods =gs.queryGoods(gID); ArrayList<Goods> goods=new ArrayList<>(); goods.add(mygoods); showBooks(goods); } }</nowiki> 在上面的代码中,调用了显示书籍数据的函数showBooks: <nowiki>private void showBooks(ArrayList<Goods> goods){ //在表格中显示数据 DefaultTableModel dt=(DefaultTableModel) tblGoods.getModel(); dt.setRowCount(0); //判断是否查询到了满足条件的书籍信息 if(goods==null||goods.size()==0) { JOptionPane.showMessageDialog(frame, "没有满足条件的书籍信息","警告信息",JOptionPane.WARNING_MESSAGE); return; } for(int i=0;i<goods.size();i++) { Goods g=goods.get(i); dt.insertRow(i, new Object[] { g.getId(),g.getName(),g.getNumber(),g.getPrice(), g.getTag().toString() }); } }</nowiki> ===改写购买按钮的事件处理程序=== 下面我们为下方的购买按钮加上调用业务逻辑层代码的内容,业务逻辑如下: #获取用户在商品表格(JTable)中选取的商品(书籍)信息。 #如果用户没有选取任何商品,则弹出提示框:请选择您需要购买的商品。 #把用户选取的商品(书籍)添加入购物车。 #如果购买数量大于库存数,则弹出提示框:书籍:《x》仅剩x本,无法满足您的购买需要。(该信息来自于购物车的购买异常CartyException) #购买成功后将商品加入购物车。 <nowiki>/** * * BuyAction:购买按钮的事件监听器 * */ private class BuyAction implements ActionListener{ public BuyAction(){ } @Override public void actionPerformed(ActionEvent e) { // 获取用户输入的账号和密码 //String gID = textGoodsID.getText(); //JOptionPane.showMessageDialog(null, gID, "信息", JOptionPane.INFORMATION_MESSAGE); //获取用户在商品表格中选择的行 int selectRow = tblGoods.getSelectedRow(); //当用户没有选择商品时 if(selectRow<0) { JOptionPane.showMessageDialog(frame, "请选择你所需要购买的商品","错误信息",JOptionPane.WARNING_MESSAGE); return; } //获取用户购买的商品 Goods g=null; String id=tblGoods.getModel().getValueAt(selectRow, 0).toString(); g=gs.queryGoods(id); //询问顾客购买商品数量 int quantity=Integer.parseInt(JOptionPane.showInputDialog("你需要购买"+g.getName()+" 数量是:")); try { cs.addToCart(g, quantity); }catch(Exception e1) { JOptionPane.showInternalMessageDialog(frame, e1.getMessage(),"错误信息",JOptionPane.WARNING_MESSAGE); } //购买后获取购物车种商品数量 int goodsQuantity=cs.getNum(); //显示购物车中的数据 lblQuantity.setText(goodsQuantity+"件"); } }</nowiki> ===设置初始化窗口时,加载所有数据=== 最后,在initial函数中添加如下代码,以便在窗口初始化时,加载所有数据: <nowiki>//展示所有商品 ArrayList<Goods> goods=gs.queryGoods(); showBooks(goods);</nowiki> ==终极任务:显示购买情况== 最后,我们为“查看详情”添加事件,单击鼠标左键弹出购物车详细信息: 查看详情标签: btn_Check.addMouseListener(new CheckMouse()); 相应的鼠标监听器: <nowiki>/*CheckAction:查看详情的监听器 * */ private class CheckMouse implements MouseListener{ public CheckMouse(){ } @Override public void mousePressed(MouseEvent e){} public void mouseClicked(MouseEvent e){ if(e.getButton()==MouseEvent.BUTTON1) { JOptionPane.showMessageDialog(frame, cs.getCart(),"购物车信息",JOptionPane.INFORMATION_MESSAGE); } } public void mouseReleased(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} }</nowiki> ==管理端设计概要== 管理端: [[文件:java9-21.png]] ===为各按钮添加基本的事件监听器=== 首先,像客户端一样,为管理端添加基本的事件监听器,能弹出对话框就OK了! ===在监听器中加入调用业务逻辑层的内容=== ====上架按钮==== 类似于客户端的购买按钮, 用户点击之后,监视器弹出对话框,询问上架的商品的名称、数量、售价等信息。 调用业务逻辑层,完成商品信息在数据库中的储存。 [[文件:Java9-24.png]] ====下架按钮==== 管理员输入ID号,并点击该按钮后 监视器调用业务逻辑层函数,进行实际下架。 下架成功后,弹出对话框,告诉管理员下架成功,效果类似于: [[文件:Java9-25.png]] ====查询按钮==== 管理员输入ID号,并点击该按钮后 监视器调用业务逻辑层函数,进行实际查询。 查询成功后,在下方的表格中显示商品信息。 ====修改按钮==== 管理员输入ID号,并点击该按钮后 监视器调用业务逻辑层函数,进行实际修改。 修改成功后,弹出对话框,告诉管理员修改成功。 ====查看详情==== 一点击查看详情按钮,在中间的表格中会显示库存中的所有商品信息。 返回 [[Java程序设计]]
返回至
Java任务:完成商品购买并显示购物车详细信息
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息