package com.lingnan.supermarket.view; // 定义包名,表示这个类属于com.lingnan.supermarket.view包 import java.awt.BorderLayout; // 导入BorderLayout布局管理器类 import java.awt.Color; // 导入Color类,用于定义颜色 import java.awt.FlowLayout; // 导入FlowLayout布局管理器类 import java.awt.event.ActionEvent; // 导入ActionEvent类,用于处理按钮点击等事件 import java.awt.event.ActionListener; // 导入ActionListener接口,用于实现事件监听 import java.awt.event.ItemEvent; // 导入ItemEvent类,用于处理下拉框选择事件 import java.awt.event.ItemListener; // 导入ItemListener接口,用于实现下拉框事件监听 import java.util.ArrayList; // 导入ArrayList类,用于存储动态数组 import javax.swing.ImageIcon; // 导入ImageIcon类,用于显示图片 import javax.swing.JButton; // 导入JButton类,用于创建按钮 import javax.swing.JComboBox; // 导入JComboBox类,用于创建下拉框 import javax.swing.JFrame; // 导入JFrame类,用于创建窗口框架 import javax.swing.JLabel; // 导入JLabel类,用于创建标签 import javax.swing.JPanel; // 导入JPanel类,用于创建面板 import javax.swing.JScrollPane; // 导入JScrollPane类,用于创建滚动面板 import javax.swing.JTable; // 导入JTable类,用于创建表格 import javax.swing.JTextField; // 导入JTextField类,用于创建文本框 import com.lingnan.supermarket.dao.impl.prodCatalogImpl; // 导入prodCatalogImpl类,用于操作商品目录数据 import com.lingnan.supermarket.dialog.UserDialog; // 导入UserDialog类,用于显示用户对话框 import com.lingnan.supermarket.dto.ProdCatalog; // 导入ProdCatalog类,用于表示商品目录数据传输对象 import com.lingnan.supermarket.dto.Production; // 导入Production类,用于表示产品数据传输对象 import com.lingnan.supermarket.dto.User; // 导入User类,用于表示用户数据传输对象 import com.lingnan.supermarket.table.ProdCatalogTM; // 导入ProdCatalogTM类,用于表示商品目录表格模型 import com.lingnan.supermarket.table.StorageTableModel; // 导入StorageTableModel类,用于表示库存表格模型 import com.lingnan.supermarket.table.UserTableModel; // 导入UserTableModel类,用于表示用户表格模型 import com.lingnan.supermarket.utils.FontUtil; // 导入FontUtil类,用于字体工具类 public class ProdCatalogView extends JPanel { // 定义ProdCatalogView类,继承自JPanel // 上面 private JPanel toolBarPanel; // 工具栏面板 private JPanel searchPanel; // 搜索面板 private JLabel logLabel, locationLabel; // 标签,用于显示文本 private JTextField nameSearchTF; // 文本框,用于输入搜索内容 private JButton searchBtn; // 搜索按钮 private JPanel opePanel; // 操作面板 private JButton addBtn, updateBtn, deleteBtn; // 添加、更新、删除按钮 private String catalog = "0"; // 商品目录ID private JComboBox combo; // 下拉框,用于选择商品目录 private String log[]=null; // 商品目录名称数组 private ArrayListalog=null; // 商品目录名称列表 private ProdCatalogTM prodCatalogTM; // 商品目录表格模型 private ProdCatalog pc; // 商品目录数据传输对象 private prodCatalogImpl pci; // 商品目录数据操作实现类 // 中间 private JScrollPane tableScrollPane; // 表格滚动面板 private JTable prodCatalogTable; // 商品目录表格 // 下面 private JPanel bottomPanel; // 底部面板 private JLabel countInfoLabel; // 标签,用于显示记录总数 private JFrame jFrame; // 窗口框架 // 构造方法,接收一个JFrame参数 public ProdCatalogView(JFrame jFrame) { this.setLayout(new BorderLayout()); // 设置面板布局为BorderLayout initView(); // 初始化视图 this.jFrame = jFrame; // 保存传入的JFrame实例 } private void initView() { // 初始化视图方法 toolBarPanel = new JPanel(new BorderLayout()); // 创建工具栏面板并设置布局为BorderLayout searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 创建搜索面板并设置布局为左对齐的FlowLayout locationLabel = new JLabel("商品目录"); // 创建商品目录标签并设置文本 locationLabel.setFont(new FontUtil().userFont); // 设置标签字体 locationLabel.setForeground(new Color(18, 150, 219)); // 设置标签前景色 logLabel = new JLabel("分类"); // 创建分类标签并设置文本 nameSearchTF = new JTextField(10); // 创建文本框并设置大小 searchBtn = new JButton("搜索", new ImageIcon("static\\icon\\search.png")); // 创建搜索按钮并设置图标和文本 // 创建操作面板和按钮,并设置图标(注释部分,未使用) // opePanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); // addBtn = new JButton(new ImageIcon("static\\icon\\add.png")); // updateBtn = new JButton(new ImageIcon("static\\icon\\update.png")); // deleteBtn = new JButton(new ImageIcon("static\\icon\\delete.png")); // 为按钮添加事件监听(注释部分,未使用) // addBtn.addActionListener(this); // updateBtn.addActionListener(this); // deleteBtn.addActionListener(this); // 将按钮添加到操作面板(注释部分,未使用) // opePanel.add(addBtn); // opePanel.add(updateBtn); // opePanel.add(deleteBtn); pci=new prodCatalogImpl(); // 创建商品目录数据操作实现类实例 this.alog=pci.findNameProdCatalog(); // 查找所有商品目录名称 this.log=new String[alog.size()]; // 创建字符串数组以存储商品目录名称 for(int i=0;i(log); // 创建下拉框并设置选项 combo.addItemListener(new MyItemListener()); // 为下拉框添加事件监听器 searchPanel.add(locationLabel); // 将商品目录标签添加到搜索面板 searchPanel.add(logLabel); // 将分类标签添加到搜索面板 searchPanel.add(combo); // 将下拉框添加到搜索面板 /* * searchPanel.add(nameSearchTF); // 将文本框添加到搜索面板(注释部分,未使用) * searchPanel.add(searchBtn); // 将搜索按钮添加到搜索面板(注释部分,未使用) */ toolBarPanel.add(searchPanel, "West"); // 将搜索面板添加到工具栏面板的西边 // toolBarPanel.add(opePanel, "East"); // 将操作面板添加到工具栏面板的东边(注释部分,未使用) // 中间表格 prodCatalogTM = new ProdCatalogTM(); // 创建商品目录表格模型 prodCatalogTM.all(); // 加载所有商品目录数据 prodCatalogTable = new JTable(prodCatalogTM); // 创建表格并设置模型 prodCatalogTable.setFont(FontUtil.tableFont); // 设置表格字体 prodCatalogTable.setRowHeight(50); // 设置表格行高 tableScrollPane = new JScrollPane(prodCatalogTable); // 创建滚动面板并添加表格 // 下面 bottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); // 创建底部面板并设置布局为左对齐的FlowLayout countInfoLabel = new JLabel("总共" + prodCatalogTable.getRowCount() + "条"); // 创建记录数标签并设置文本 bottomPanel.add(countInfoLabel); // 将记录数标签添加到底部面板 this.add(toolBarPanel, "North"); // 将工具栏面板添加到面板的北边 this.add(tableScrollPane, "Center"); /* 将表格放到中间 */ // 将表格滚动面板添加到面板的中间 this.add(bottomPanel, "South"); // 将底部面板添加到面板的南边 setVisible(true); // 设置面板为可见 } // @Override // public void actionPerformed(ActionEvent e) { // Object source = e.getSource(); // if (addBtn == source) { // 如果事件源是添加按钮 // UserDialog userDialog = new UserDialog(jFrame); // 创建用户对话框 // userDialog.setVisible(true); // 设置用户对话框为可见 // } else if (updateBtn == source) { // 如果事件源是更新按钮 // // 更新按钮的事件处理代码(未实现) // } else if (deleteBtn == source) { // 如果事件源是删除按钮 // // 删除按钮的事件处理代码(未实现) // } // } public class MyItemListener implements ItemListener { // 创建一个内部类实现ItemListener接口 @Override public void itemStateChanged(ItemEvent e) { // 重写itemStateChanged方法 JComboBox cb = (JComboBox) e.getSource(); // 获取事件源下拉框 String catalog1 = (String) cb.getSelectedItem(); // 获取选中的商品目录名称 pci =new prodCatalogImpl(); // 创建商品目录数据操作实现类实例 for(int i=0;i