“Java任务:完成商品购买并显示购物车详细信息”的版本间的差异
来自CloudWiki
(→为查询按钮添加事件处理程序) |
|||
第52行: | 第52行: | ||
==任务进阶:关联业务逻辑层(MVC)== | ==任务进阶:关联业务逻辑层(MVC)== | ||
===为查询按钮添加事件处理程序=== | ===为查询按钮添加事件处理程序=== | ||
− | <nowiki> private class QueryAction implements ActionListener{ | + | <nowiki> /** |
+ | * | ||
+ | * QueryAction:查询按钮的事件监听器 | ||
+ | * | ||
+ | */ | ||
+ | private class QueryAction implements ActionListener{ | ||
public QueryAction(){ | public QueryAction(){ | ||
第59行: | 第64行: | ||
@Override | @Override | ||
public void actionPerformed(ActionEvent e) { | 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> | ||
+ | |||
===定义显示书籍数据的函数=== | ===定义显示书籍数据的函数=== | ||
2018年6月1日 (五) 13:55的版本
完成商品购买功能,效果如下图所示:
完成购物车信息查看功能,效果如下图所示:
目录
初始任务:添加事件监听器
为按钮添加事件处理程序
查询按钮:
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(String name,int category) { BookDao dao=new BookDaoTesting(); List<Book> books=dao.queryBook(name, category); //在表格中显示数据 DefaultTableModel dt=(DefaultTableModel) tblBook.getModel(); dt.setRowCount(0); //判断是否查询到了满足条件的书籍信息 if(books==null||books.size()==0) { JOptionPane.showMessageDialog(frame, "没有满足条件的书籍信息","警告信息",JOptionPane.WARNING_MESSAGE); return; } for(int i=0;i<books.size();i++) { Book book=books.get(i); dt.insertRow(i, new Object[] { book.getBid(),book.getName(),book.getAuthor(),book.getNumber(), book.getCategory().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程序设计