学习日记Day3:购物车的实现

1、实现购物车的基本架构,对购物车进行简单的页面设计

2、实现第一次商品添加,能够在购物车窗体显现出来

3、实现继续购买的功能,使购物车能持续添加商品

代码要配合接口类、接口实现类、实体类等配合使用,无法单独编译出来


package com.yc.frame;

import java.awt.*;
import java.awt.event.*;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

import com.yc.entire.CartItem;
import com.yc.entire.Shop;
import com.yc.entire.User;
public class ShopCartFrame extends JFrame {
	User loginUser;
	Shop shop;
	public static Map<String,CartItem> carts=new Hashtable<String,CartItem>();//购物车
	//static保证购物车不改变;否则new一次改变一次
	DefaultTableModel dtm;
	JTable table;
	String []heads=new String[] {"ISBN","商品名称","金额","购买数量","总金额"};//设计页面
	Object [][]datas;//定义一个二维数组,使其能存放购物车页面的信息
	JScrollPane sp;//滚动面板 用来放置购物车表
	
	JButton  btnConinue1=new JButton("继续购买");
	JButton  btnChechout=new JButton("支付");
	
	Container cont=this.getContentPane();
	//private String n;
	
	
	public ShopCartFrame(User loginUser,Shop shop,int num) {//实现购物车窗体
		super("购物车窗体");
		this.loginUser=loginUser;
		this.shop=shop;
		
		
		
		//if() {
			if(carts.containsKey(shop.getIsbn())) {
				carts.put(shop.getIsbn(),new CartItem(shop,carts.get(shop.getIsbn()).getNum()+num));
			}else
				carts.put(shop.getIsbn(),new CartItem(shop,num));
			
		//}else
			//JOptionPane.showConfirmDialog(cont,"请输入购买数量");
			
		
		//下面是把购物车内容放到窗体上
		datas=new Object[carts.size()][5];//实例化二维数组 用来存放购物车的内容
		//遍历Map取到购物车的内容 放到二维数组里
		//首先得到所有键
		Set<String> isbns=carts.keySet();
		Iterator<String> it=isbns.iterator();
		int i=0;
		while(it.hasNext()) {
			String isbn=it.next();//得到isbn
			CartItem ci=carts.get(isbn);//通过键得到值 购物车明细
			Shop shop1=ci.getShop();
			int num1=ci.getNum();
			datas[i][0]=isbn;
			datas[i][1]=shop1.getShopName();
			datas[i][2]=shop1.getPrice();
			datas[i][3]=num1;
			datas[i][4]=num1*shop.getPrice();
			i++;
			
		}
		dtm=new DefaultTableModel(datas,heads);//表格模型实例化对象
		table=new JTable(dtm);
		sp=new JScrollPane(table);
		cont.add(sp);//将滚动面板放到窗体上
		
		
		
		JPanel p=new JPanel();
		p.add(btnConinue1);
		btnConinue1.addActionListener(new ActionListener() {//定义一个事件监听器
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				AllShopsFrame asf=new AllShopsFrame(loginUser);
				ShopCartFrame.this.dispose();//关闭当前窗体
			}
		});
		
		p.add(btnChechout);
		cont.add(p,BorderLayout.SOUTH);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体
		this.setSize(700,400);
		this.setLocation(60, 60);
		this.setVisible(true);
	}
}

/**
*@auther:
*@Time:2022年6月9日 上午9:11:40
*/

效果图

 

点击继续购买:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值