JAVA第七次作业
(一)学习总结
1.写出事件处理模型中的几个关键词,并通过具体代码实例说明你对事件处理模型的理解。
ActionEvent 通常在按下按钮,在文本框中回车,双击一个列表项或选中某个菜单时发生.
ContainerEvent 当一个组件从容器中加入或者删除时发生
KeyEvent 当从键盘的按键被按下,松开时发生
MouseEvent 当鼠标被拖动、移动、点击、按下..
TextEvent 当文本区和文本域的文本发生改变时发生
ActionListener:用于接收操作事件的监听器接口,事件监听者实际上就是一个类,该类实现了某个事件监听器接口,对接受到的事件进行处理。
private void addListener() {
addBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){ //actionPerformed:
addPetItem();
}
});
}
ActionListener。确定接口后,需要自定义事件处理类实现该接口。
public class QuitHandler implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
}
}
自定义类实现监听器接口后,需要覆盖监听器中特定的方法。
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
2.其他需要总结的内容。
事件对象(Event object):事件发生时所携带的信息。
事件源(Evebt Source):能够产生事件的GUI组件对象,如按钮、文本框等。
事件监听器(Event Listener):当事件发生时,事件监听器对象会得到通知,它所实现准备好的事件处理方法被调用。这些事件处理方法的参数中,将引用到相应的事件对象。
三者之间的相互协作关系称为“事件委托模型”
GUI组件
“组件(Component)”是图形用户界面的基本组成元素,凡是能够以图形化方式显示在屏幕上并能与用户进行交互的对象均为组件,比如菜单、按钮等。
大多数GUI组件必须放置于某个GUI容器中才能显示。
java.awt.Component是除Menu相关组件之外所有AWT组件类的根父类,该类定义了GUI组件的基本特性,比如尺寸、位置和颜色等,并实现了作为一个GUI组件所应具备的基本功能。
(二)实验总结
实验内容:
基本要求:
使用GUI,编写一个宠物商店管理系统实现对宠物信息的统一管理。假设宠物种类有猫、狗,宠物信息包括:编号、品种、年龄、数量、价格。系统启动进入登录界面,登录成功进入管理界面,否则提出错误信息后退出系统。
在管理界面实现以下功能:
(1)显示所有宠物列表
(2)添加宠物到列表
(3)删除宠物
(4)对宠物信息进行修改
(5)退出
功能扩展:
用户分为管理员和普通用户两种,增加普通用户注册功能,增加普通用户界面。
实现以下功能:
(1)显示所有宠物
(2)能够按照品种对宠物进行查找
(3)购买宠物
(4)显示购买清单
(5)退出
实验总结:
窗口初始化:
private void init() {
this.setTitle("宠物商店欢迎你!");
this.setSize(450,400);
GUITools.center(this); //窗口居中
GUITools.setTitleImage(this,"koala.png"); // 显示窗口图标
this.setResizable(false); //窗体大小固定
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
添加组件:
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);
//字段标题
noLabel.setBounds(50, 250, 70, 25);
kindLabel.setBounds(150, 250, 70, 25);
ageLabel.setBounds(240, 250, 70, 25);
numberLabel.setBounds(300, 250, 70, 25);
priceLabel.setBounds(400, 250, 70, 25);
this.add(noLabel);
this.add(kindLabel);
this.add(ageLabel);
this.add(numberLabel);
this.add(priceLabel);
//添加组件
addNoText.setBounds(50, 280, 80, 25);
addKindText.setBounds(150, 280, 80, 25);
addAgeText.setBounds(250, 280, 40, 25);
addNumberText.setBounds(300, 280, 80, 25);
addPriceText.setBounds(400, 280, 60, 25);
this.add(addNoText);
this.add(addKindText);
this.add(addAgeText);
this.add(addNumberText);
this.add(addPriceText);
addBtn.setBounds(460, 280, 90, 25);
this.add(addBtn);
//修改组件
updateNoText.setBounds(50, 310, 80, 25);
updateKindText.setBounds(150, 310, 80, 25);
updateAgeText.setBounds(250, 310, 40, 25);
updateNumberText.setBounds(300, 310, 80, 25);
updatePriceText.setBounds(400, 310, 60, 25);
this.add(updateNoText);
this.add(updateKindText);
this.add(updateAgeText);
this.add(updateNumberText);
this.add(updatePriceText);
updateBtn.setBounds(460, 310, 90, 25);
this.add(updateBtn);
//删除组件
delNoText.setBounds(350, 340, 80, 25);
this.add(delNoText);
delBtn.setBounds(460, 340, 90, 25);
this.add(delBtn);
}
添加监听器:
private void addListener() {
//添加按钮监听
addBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
addPetItem(); //调用添加方法
}
});
//修改按钮监听
updateBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
updatePetItem(); //调用修改方法
}
});
//删除按钮监听
delBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
delPetItem(); //调用删除方法
}
});
}
集合数组转为二维数组:
private String[][] listToArray(ArrayList<PetItem> list) {
String[][] tbody = new String[list.size()][5];
for(int i = 0; i < list.size();i++){
PetItem pet = list.get(i);
tbody[i][0] = pet.getNo();
tbody[i][1] = pet.getKind();
tbody[i][2] = pet.getAge();
tbody[i][3] = pet.getNumber();
tbody[i][4] = pet.getPrice();
}
return tbody;
}
(三)代码托管(务必链接到你的项目)
•码云commit历史截图
码云地址链接:http://git.oschina.net/hebau_cs15/Java-CS02wcy
上传实验项目代码到码云,在码云项目中选择“统计-commits”,设置搜索时间段,搜索本周提交历史,并截图。