A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package cn.itheima.view;

import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import cn.itheima.other.FruitItem;

/*
* 管理员界面
*/
public abstract class AbstractFruitMngDialog extends JDialog {

        /*
         * 组件
         */
        // 定义界面使用到的组件作为成员变量
        private JLabel tableLabel = new JLabel("水果列表");// 水果列表标题
        private JScrollPane tablePane = new JScrollPane();// 滚动视口
        protected JTable table = new JTable(); // 水果列表

        private JLabel numberLabel = new JLabel("    水果编号");// 编号标题
        private JLabel nameLabel = new JLabel("    水果名称");// 名称标题
        private JLabel priceLabel = new JLabel("    水果单价");// 单价标题
        private JLabel unitLabel = new JLabel("    计价单位");// 计价单位标题
        // 添加功能组件
        protected JTextField addNumberText = new JTextField(6);// 添加编号文本框
        protected JTextField addNameText = new JTextField(6);// 添加名称文本框
        protected JTextField addPriceText = new JTextField(6);// 添加单价文本框
        protected JTextField addUnitText = new JTextField(6);// 添加计价单位文本框
        private JButton addBtn = new JButton("添加水果");// 添加按钮
        // 修改功能组件
        protected JTextField updateNumberText = new JTextField(6);// 修改编号文本框
        protected JTextField updateNameText = new JTextField(6);// 修改名称文本框
        protected JTextField updatePriceText = new JTextField(6);// 修改单价文本框
        protected JTextField updateUnitText = new JTextField(6);// 修改计价单位文本框
        private JButton updateBtn = new JButton("修改水果");// 修改按钮
        // 删除功能组件
        protected JTextField delNumberText = new JTextField(6);// 添加编号文本
        private JButton delBtn = new JButton("删除水果");// 删除按钮

        // 构造方法
        public AbstractFruitMngDialog(Frame owner) {
                this.init();// 初始化操作
                this.addComponent();// 添加组件
                this.addListener();// 添加监听器
        }

        // 初始化操作
        private void init() {
                this.setTitle("超市货物管理!");// 标题
                this.setSize(600, 400);// 窗体大小与位置
                GUITools.center(this);// 设置窗口在屏幕上的位置
                this.setResizable(false);// 窗体大小固定
        }

        // 添加组件
        private void addComponent() {

                // 取消布局
                this.setLayout(null);

                // 表格标题
                tableLabel.setBounds(265, 20, 70, 25);
                this.add(tableLabel);

                // 表格
                table.getTableHeader().setReorderingAllowed(false); // 列不能移动
                table.getTableHeader().setResizingAllowed(false); // 不可拉动表格
                table.setEnabled(false); // 不可更改数据
                tablePane.setBounds(50, 50, 500, 200);
                tablePane.setViewportView(table); // 视口装入表格
                this.add(tablePane);

                // 字段标题
                numberLabel.setBounds(50, 250, 70, 25);
                nameLabel.setBounds(150, 250, 70, 25);
                priceLabel.setBounds(250, 250, 70, 25);
                unitLabel.setBounds(350, 250, 70, 25);
                this.add(numberLabel);
                this.add(nameLabel);
                this.add(priceLabel);
                this.add(unitLabel);

                // 增加组件
                addNumberText.setBounds(50, 280, 80, 25);
                addNameText.setBounds(150, 280, 80, 25);
                addPriceText.setBounds(250, 280, 80, 25);
                addUnitText.setBounds(350, 280, 80, 25);
                this.add(addNumberText);
                this.add(addNameText);
                this.add(addPriceText);
                this.add(addUnitText);
                addBtn.setBounds(460, 280, 90, 25);
                this.add(addBtn);

                // 修改组件
                updateNumberText.setBounds(50, 310, 80, 25);
                updateNameText.setBounds(150, 310, 80, 25);
                updatePriceText.setBounds(250, 310, 80, 25);
                updateUnitText.setBounds(350, 310, 80, 25);
                this.add(updateNumberText);
                this.add(updateNameText);
                this.add(updatePriceText);
                this.add(updateUnitText);
                updateBtn.setBounds(460, 310, 90, 25);
                this.add(updateBtn);

                // 删除组件
                delNumberText.setBounds(50, 340, 80, 25);
                this.add(delNumberText);
                delBtn.setBounds(460, 340, 90, 25);
                this.add(delBtn);
        }

        // 添加监听器
        private void addListener() {

                // 添加按钮监听
                addBtn.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                                // 获取用户数据
                                String addNumber = addNumberText.getText();
                                String addName = addNameText.getText();
                                String addPrice = addPriceText.getText();
                                String addUnit = addUnitText.getText();
                                // 调用添加方法
                                addFruitItem(addNumber, addName, addPrice, addUnit);
                        }
                });
                // 修改按钮监听
                updateBtn.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                                // 获取用户数据
                                String updateNumber = updateNumberText.getText();
                                String updateName = updateNameText.getText();
                                String updatePrice = updatePriceText.getText();
                                String updateUnit = updateUnitText.getText();
                                // 调用修改方法
                                updateFruitItem(updateNumber, updateName, updatePrice, updateUnit);
                        }
                });
                // 删除按钮监听
                delBtn.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                                // 获取用户数据
                                String delNumber = delNumberText.getText();
                                // 调用删除方法
                                deleteFruitItem(delNumber);
                        }
                });
        }

        public void setTableData(ArrayList<FruitItem> list) {
                // 定义表格头
                String[] thead = { "水果编号", "水果名称", "水果单价", "计价单位" };
                // 根据FruitItem的model与集合数据定义JTable的数据二维数组
                String[][] tbody = new String[list.size()][4];
                // 依次获取集合中每一个水果
                for (int i = 0; i < list.size(); i++) {
                        // 获取当前遍历到的水果
                        FruitItem fruitItem = list.get(i);
                        // 依次拿出该水果的各维度信息
                        tbody[i][0] = fruitItem.getNumber();
                        tbody[i][1] = fruitItem.getName();
                        tbody[i][2] = fruitItem.getPrice() + "";
                        tbody[i][3] = fruitItem.getUnit();
                }
                // 为表格赋值
                TableModel data = new DefaultTableModel(tbody, thead);
                table.setModel(data);
        }

        // 抽象添加方法,用于完成添加逻辑
        public abstract void addFruitItem(String addNumber, String addName, String addPrice, String addUnit);

        // 抽象修改方法,用于完成修改逻辑
        public abstract void updateFruitItem(String updateNumber, String updateName, String updatePrice, String updateUnit);

        // 抽象删除方法,用于完成删除逻辑
        public abstract void deleteFruitItem(String delNumber);
}

1 个回复

倒序浏览
谁能完成抽象方法给分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马