You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Hotel_service_system/ReserveTablemodel.java

243 lines
8.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.lsy.ui;
import com.lsy.dao.ProductDaolsy;
import com.lsy.dao.impl.ProductDaoImplsy;
import com.lsy.model.Productlsy;
import javax.swing.*;
import javax.swing.table.TableModel;
import java.awt.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ReserveTablemodel extends Myframelsy{
private JTable table;
private JLabel lblImage;
private JLabel lblListprice;
private JLabel lblDescn;
private JLabel lblUnitcost;
//商品列表集合
private List<Productlsy> products;
///创建商品Dao对象
private final ProductDaolsy dao =new ProductDaoImplsy();
//购物车键是选择商品的Id值是商品的数量
private Map<String,Integer> cart = new HashMap<String,Integer>();
//选择的商品索引
private int selectedRow = -1;
public ReserveTablemodel(String title,int width,int height){
super(title,width,height);
//查询所有商品
products = dao.findAll();
//初始化界面
//添加顶部搜索面板
getContentPane().add(getSearchPanel(), BorderLayout.NORTH);
//初始化分隔面板
JSplitPane splitPane = new JSplitPane();
//设置分隔线位置
splitPane.setDividerLocation(600);
//设置左侧面板
splitPane.setLeftComponent(getLeftPanel());
//设置右侧面板
splitPane.setRightComponent(getRightPanel());
//添加分隔面板
getContentPane().add(splitPane,BorderLayout.CENTER);
}
//初始化搜索面板
private JPanel getSearchPanel(){
JPanel searchPanel = new JPanel();
FlowLayout flowLayout = (FlowLayout) searchPanel.getLayout();
flowLayout.setVgap(20);
flowLayout.setHgap(40);
JLabel lbl = new JLabel("选择商品类别:");
lbl.setFont(new Font("微软雅黑", Font.PLAIN, 15));
searchPanel.add(lbl);
String[] categorys = {"鱼类","狗类","爬行类","猫类","鸟类"};
JComboBox comboBox = new JComboBox(categorys);
comboBox.setFont(new Font("微软雅黑",Font.PLAIN,15));
searchPanel.add(comboBox);
JButton btnGo = new JButton("查询");
btnGo.setFont(new Font("微软雅黑",Font.PLAIN,15));
searchPanel.add(btnGo);
JButton btnReset = new JButton("重置");
btnReset.setFont(new Font("微软雅黑",Font.PLAIN,15));
searchPanel.add(btnReset);
//注册查询按钮的ActionEvent事件监听器
btnGo.addActionListener(e -> {
//所选择的类别
String category = (String) comboBox.getSelectedItem();
//按照类别进行查询
products = dao.findByCategory(category);
TableModel model = new ProductTablemodel(products);
table.setModel(model);
});
//注册重置按钮的ActionEvent事件监听器
btnReset.addActionListener(e -> {
products = dao.findAll();
TableModel model = new ProductTablemodel(products);
table.setModel(model);
});
return searchPanel;
}
//右侧面板
private JPanel getRightPanel() {
JPanel rightPanel = new JPanel();
rightPanel.setBackground(Color.WHITE);
rightPanel.setLayout(new GridLayout(2, 1, 0, 0));
lblImage = new JLabel();
rightPanel.add(lblImage);
lblImage.setHorizontalAlignment(SwingConstants.CENTER);
JPanel detailPanel = new JPanel();
detailPanel.setBackground(Color.WHITE);
rightPanel.add(detailPanel);
detailPanel.setLayout(new GridLayout(8, 1, 0, 5));
JSeparator separator_1 = new JSeparator();
detailPanel.add(separator_1);
lblListprice = new JLabel();
detailPanel.add(lblListprice);
//设置字体
lblListprice.setFont(new Font("微软雅黑", Font.PLAIN, 16));
lblUnitcost = new JLabel();
detailPanel.add(lblUnitcost);
//设置字体
lblUnitcost.setFont(new Font("微软雅黑", Font.PLAIN, 16));
lblDescn = new JLabel();
detailPanel.add(lblDescn);
//设置字体
lblDescn.setFont(new Font("微软雅黑", Font.PLAIN, 16));
JSeparator separator_2 = new JSeparator();
detailPanel.add(separator_2);
JButton btnAdd = new JButton("添加购物车");
btnAdd.setFont(new Font("微软雅黑", Font.PLAIN, 15));
detailPanel.add(btnAdd);
//布局占位使用
JLabel lb1 = new JLabel("");
detailPanel.add(lb1);
JButton btnCheck = new JButton("查看购物车");
btnCheck.setFont(new Font("微软雅黑", Font.PLAIN, 15));
detailPanel.add(btnCheck);
//注册【查看购物车】按钮的ActionEvent事件监听器
btnAdd.addActionListener(e -> {
if (selectedRow == -1) {
return;
}
//添加商品到购物车处理
Productlsy selectproduct = products.get(selectedRow);
String productid = selectproduct.getProductidlsy();
if (cart.containsKey(productid)) {
//购物车中已有该商品
//获得商品数量
Integer quantity = cart.get(productid);
cart.put(productid, ++quantity);
} else {
cart.put(productid, 1);
}
System.out.println(cart);
});
//注册【查看购物车】按钮的ActionEvent事件监听器
// btnCheck.addActionListener(e -> {
// CartFrame cartFrame = new CartFrame(cart, this);
// cartFrame.setVisible(true);
// setVisible(false);
// }
// );
return rightPanel;
}
//初始化左侧面板
private JScrollPane getLeftPanel(){
JScrollPane leftScrollPane = new JScrollPane();
leftScrollPane.setViewportView(getTable());
return leftScrollPane;
}
//初始化左侧面板中的表格控件
private JTable getTable() {
TableModel model = new ProductTablemodel(this.products);
if (table == null) {
table = new JTable(model);
//设置表中内容字体
table.setFont(new Font("微软雅黑", Font.PLAIN, 16));
//设置表列标题字体
table.getTableHeader().setFont(new Font("微软雅黑", Font.PLAIN, 16));
//设置表行高
table.setRowHeight(51);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ListSelectionModel rowSelectionModel = table.getSelectionModel();
rowSelectionModel.addListSelectionListener(e -> {
//只处理鼠标释放
if (e.getValueIsAdjusting()) {
return;
}
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
selectedRow = lsm.getMinSelectionIndex();
if (selectedRow < 0) {
return;
}
//更新右侧面板内容
Productlsy p = products.get(selectedRow);
String petImage = String.format("/images/%s", p.getImagelsy());
ImageIcon icon = new ImageIcon(ProductListFrame.class.getResource(petImage));
lblImage.setIcon(icon);
String descn = p.getDescnlsy();
lblDescn.setText("商品描述:" + descn);
double listprice = p.getListpricelsy();
String slistprice = String.format("商品市场价%.2f", listprice);
lblListprice.setText(slistprice);
double unitcost = p.getUnitcostlsy();
String slilUnitcost = String.format("商品单价%.2f", unitcost);
lblUnitcost.setText(slilUnitcost);
});
} else {
table.setModel(model);
}
return table;
}
}