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
*/
效果图
点击继续购买: