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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 15044393192 中级黑马   /  2016-4-6 23:14  /  397 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itheima.fruit.other;

import java.awt.Frame;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import cn.itheima.fruit.view.AbstractFruitMngDialog;
/*
* 水果管理界面控制类
*/
public class FruitMngDialogController extends AbstractFruitMngDialog {
        /*
         * 1.定义FruitItem类,用来封装水果信息;
         * 2.在FruitMngDialogController类中创建静态ArrayList<FruitItem>集合,用来存储水果对象;
         * 3.在FruitMngDialogController类中,使用静态代码块,创建水果对象,将水果存入到集合中
     * 4.在FruitMngDialogController类的构造方法中,调用setTableData()方法设置表格内显示的水果数据。
         */
        private static ArrayList<FruitItem> dataList = new ArrayList<FruitItem>();
       
        //静态代码块,创建水果对象,将水果存入到集合中
        static {
                //创建水果
                FruitItem item1 = new FruitItem("1000","香蕉",3.5,"斤");
                FruitItem item2 = new FruitItem("1001","苹果",5.0,"个");
                FruitItem item3 = new FruitItem("1002","菠萝",10.0,"个");
                //将水果存入到集合中
                dataList.add(item1);
                dataList.add(item2);
                dataList.add(item3);
        }
       
       
        /*
         * 构造方法
         */
        public FruitMngDialogController(Frame owner) {
                super(owner);
                //调用setTableData()方法设置表格内显示的水果数据
                setTableData(dataList);
        }

        /*
         * 点击“添加水果”按钮时,调用本方法
         */
        @Override
        public void addFruitItem(String addNumber, String addName, String addPrice,
                        String addUnit) {
                /*
                 *         遍历所有数据,与新添加数据的编号比对
                                获取当前水果的编号
                                判断当前水果与添加的水果编号是否相同
                                如果相同,弹窗错误提示,直接结束方法
                        封装水果信息,添加到集合
                        刷新表格数据
                 */
                for (int i = 0; i < dataList.size(); i++) {
                        //获取到集合中每一种水果
                        FruitItem item = dataList.get(i);
                        //获取当前水果的编号
                        String number = item.getNumber();
                        //判断当前水果与添加的水果编号是否相同
                        //基本数据类型进行值比较使用 ==,引用数据类型进行值比较实用equals()
                        if (number.equals(addNumber)) {
                                //如果相同,弹窗错误提示,直接结束方法
                                JOptionPane.showMessageDialog(this, "新水果的编号已存在,不能实现新水果的添加");
                                return;
                        }
                }
                //说明当前新水果编号在集合不重复,可以添加新水果
                //封装新水果信息(需要把水果价格从字符串类型 转换到 double类型) Double.parseDouble("3.3")
                //下面的判断用来避免空字符串转换成数字出现的问题
                if (addPrice.equals("")) {
                        addPrice = "0.0";
                }
                FruitItem newItem = new FruitItem(addNumber, addName, Double.parseDouble(addPrice), addUnit);
                //新水果添加到集合
                dataList.add(newItem);
                //更新表格数据
                setTableData(dataList);
        }

        /*
         *  点击“修改水果”按钮时,调用本方法
         */
        @Override
        public void updateFruitItem(String updateNumber, String updateName,
                        String updatePrice, String updateUnit) {
                /*
                 *使用输入的编号与所有数据对比
                        如果存在相同编号数据,则可以更新
                                将数据封装为FruitItem对象
                                更新集合中的水果信息
                                刷新表格数据
                        如果不存在相同编号数据,则不可以更新,弹窗错误提示
                 */
                //使用输入的编号与所有数据对比
                for (int i = 0; i < dataList.size(); i++) {
                        //得到集合中的每一个水果
                        FruitItem item = dataList.get(i);
                        //获取当前水果的编号
                        String number = item.getNumber();
                        //判断当前水果编号与要修改的水果编号是否一致
                        if (number.equals(updateNumber)) {
                                //将数据封装为FruitItem对象
                                if (updatePrice.equals("")) {
                                        updatePrice = "0.0";
                                }
                                FruitItem newItem = new FruitItem(updateNumber, updateName, Double.parseDouble(updatePrice), updateUnit);
                                //更新集合中的水果信息
                                dataList.set(i, newItem);
                                //刷新表格数据
                                setTableData(dataList);
                                return;
                        }
                }
                //如果执行到了这,说明指定的水果编号在集合中不存在,则不可以更新水果,弹窗错误提示
                JOptionPane.showMessageDialog(this, "对不起哦,您指定的编号对应的水果不存在");
        }

        /*
         *  点击“删除水果”按钮时,调用本方法
         */
        @Override
        public void deleteFruitItem(String delNumber) {
                /*
                 * 使用输入的编号与所有数据对比
                          如果存在相同编号数据,则可以删除
                 删除指定编号的水果项
                 刷新表格数据
                 如果不存在相同编号数据,则不可以删除,弹窗错误提示
                 */
                for (int i = 0; i < dataList.size(); i++) {
                        //获取到每一个水果
                        FruitItem item = dataList.get(i);
                        //获取当前水果的编号
                        String number = item.getNumber();
                        //进行编号的比较
                        if (number.equals(delNumber)) {
                                //删除指定编号的水果项
                                dataList.remove(i);
                                //刷新表格数据
                                setTableData(dataList);
                                return;
                        }
                }
                //如果不存在相同编号数据,则不可以删除,弹窗错误提示
                JOptionPane.showMessageDialog(this, "当前编号对应的水果不存在,不能删除");
        }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马