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, "当前编号对应的水果不存在,不能删除");
}
}
|
|