“Java任务:完成商品购买并显示购物车详细信息”的版本间的差异
来自CloudWiki
(→为查询按钮添加事件处理程序) |
(→定义显示书籍数据的函数) |
||
第76行: | 第76行: | ||
===定义显示书籍数据的函数=== | ===定义显示书籍数据的函数=== | ||
− | <nowiki>private void 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[] { | dt.insertRow(i, new Object[] { | ||
− | + | g.getId(),g.getName(),g.getNumber(),g.getPrice(), | |
− | + | g.getTag().toString() | |
}); | }); | ||
} | } | ||
− | }</nowiki> | + | }</nowiki> |
===设置初始化窗口时,加载所有数据=== | ===设置初始化窗口时,加载所有数据=== |
2018年6月1日 (五) 13:57的版本
完成商品购买功能,效果如下图所示:
完成购物车信息查看功能,效果如下图所示:
目录
初始任务:添加事件监听器
为按钮添加事件处理程序
查询按钮:
btnQuery.addActionListener(new QueryAction());
购买按钮:
btnBuy.addActionListener(new BuyAction());
查询按钮的监听器(内部类):
/** * * 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); } }
购买按钮的监听器:
/** * * 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); } }
任务进阶:关联业务逻辑层(MVC)
为查询按钮添加事件处理程序
/** * * 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); } }
定义显示书籍数据的函数
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() }); } }
设置初始化窗口时,加载所有数据
showBooks(null,0);
终极任务:完成商品购买
第一步:启动Eclipse,导入Java Project,工程名为Project0901。
第二步:为按钮购买添加单击事件,业务逻辑如下:
- 获取用户在商品表格(JTable)中选取的商品(书籍)信息。
- 如果用户没有选取任何商品,则弹出提示框:请选择您需要购买的商品。
- 把用户选取的商品(书籍)添加入购物车。
- 如果购买数量大于库存数,则弹出提示框:书籍:《x》仅剩x本,无法满足您的购买需要。(该信息来自于购物车的购买异常CartyException)
- 购买成功后将商品加入购物车。
- 更新商品表格(JTable)中对应商品库存数。
- 在BookListForm窗体中显示购物车中已购买的商品总数。
具体代码如下:
btnBuy.addActionListener(e->{ //获取用户在商品表格中选择的行 int selectRow=tblBook.getSelectedRow(); //当用户没有选择商品时 if(selectRow<0) { JOptionPane.showMessageDialog(frame, "请选择你所需要购买的商品","错误信息",JOptionPane.WARNING_MESSAGE); return; } //获取用户购买的商品 Book book=null; String bid=tblBook.getModel().getValueAt(selectRow, 0).toString(); book=bookDao.queryBook(bid); //询问顾客购买商品数量 int quantity=Integer.parseInt(JOptionPane.showInputDialog("你需要购买"+book.getName()+" 数量是:")); try { user.getCart().buy(book, quantity); }catch(CartException e1) { JOptionPane.showInternalMessageDialog(frame, e1.getMessage(),"错误信息",JOptionPane.WARNING_MESSAGE); } //购买后获取购物车种商品数量 int goodsQuantity=user.getCart().size(); //显示购物车中的数据 lblQuantity.setText(goodsQuantity+"件"); //修改表格数据 tblBook.getModel().setValueAt(book.getNumber(), selectRow, 3); });
第三步:为“查看详情”添加事件,单击鼠标左键弹出购物车详细信息:
lblCartDetail.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { if(arg0.getButton()==MouseEvent.BUTTON1) { JOptionPane.showMessageDialog(frame, user.getCart().toString(),"购物车信息",JOptionPane.INFORMATION_MESSAGE); } } });
返回 Java程序设计