(一)学习总结
1.写出事件处理模型中的几个关键词,并通过具体代码实例说明你对事件处理模型的理解。
事件就是表示一个对象的发生状态变化。
基本事件及其监听处理:
窗体事件及监听处理:使用匿名内部类完成监听操作
import java.awt.event.WindowAdapter ;
import java.awt.event.WindowEvent ;
import java.awt.Color ;
import javax.swing.JFrame ;
public class MyEventWindowEventJFrame03{
public static void main(String args[]){
JFrame frame = new JFrame("Welcome To MLDN") ;
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.out.println("windowClosing --> 窗口关闭") ;
System.exit(1) ;
}
}) ; // 加入事件
frame.setSize(300,150) ;
frame.setBackground(Color.WHITE) ;
frame.setLocation(300,200) ;
frame.setVisible(true) ;
}
};
动作事件及监听处理
import java.awt.event.WindowAdapter ;
import java.awt.event.ActionListener ;
import java.awt.event.WindowEvent ;
import java.awt.event.ActionEvent ;
import java.awt.Color ;
import java.awt.GridLayout ;
import java.awt.Font ;
import javax.swing.JFrame ;
import javax.swing.JButton ;
import javax.swing.JLabel ;
import javax.swing.JTextField ;
import javax.swing.JPasswordField ;
import javax.swing.JPanel ;
class LoginCheck{
private String name ;
private String password ;
public LoginCheck(String name,String password){
this.name = name ;
this.password = password ;
}
public boolean validate(){
if("lixinghua".equals(name)&&"mldn".equals(password)){
return true ;
}else{
return false ;
}
}
};
class ActionHandle{
private JFrame frame = new JFrame("Welcome To MLDN") ;
private JButton submit = new JButton("登陆");
private JButton reset = new JButton("重置");
private JLabel nameLab = new JLabel("用户名:") ;
private JLabel passLab = new JLabel("密 码:") ;
private JLabel infoLab = new JLabel("用户登陆系统") ;
private JTextField nameText = new JTextField(10) ;
private JPasswordField passText = new JPasswordField() ;
private JPanel pan = new JPanel() ;
public ActionHandle(){
Font fnt = new Font("Serief",Font.ITALIC + Font.BOLD,12) ;
infoLab.setFont(fnt) ; // 设置标签的显示文字
submit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource()==submit){
String tname = nameText.getText() ;
String tpass = new String(passText.getPassword()) ;
LoginCheck log = new LoginCheck(tname,tpass) ;
if(log.validate()){
infoLab.setText("登陆成功,欢迎光临!") ;
}else{
infoLab.setText("登陆失败,错误的用户名或密码!") ;
}
}
}
})
reset.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(e.getSource()==reset){
nameText.setText("") ;
passText.setText("") ;
infoLab.setText("用户登陆系统") ;
}
}
})
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(1) ;
}
}) // 加入事件
frame.setLayout(null) ;
nameLab.setBounds(5,5,60,20) ;
passLab.setBounds(5,30,60,20) ;
infoLab.setBounds(5,65,220,30) ;
nameText.setBounds(65,5,100,20) ;
passText.setBounds(65,30,100,20) ;
submit.setBounds(165,5,60,20) ;
reset.setBounds(165,30,60,20) ;
frame.add(nameLab) ;
frame.add(passLab) ;
frame.add(infoLab) ;
frame.add(nameText) ;
frame.add(passText) ;
frame.add(submit) ;
frame.add(reset) ;
frame.setSize(280,130) ;
frame.setBackground(Color.WHITE) ;
frame.setLocation(300,200) ;
frame.setVisible(true) ;
}
}
public class MyActionEventDemo03{
public static void main(String args[]){
new ActionHandle() ;
}
}
键盘事件及监听处理
import java.awt.event.WindowAdapter ;
import java.awt.event.KeyAdapter ;
import java.awt.event.WindowEvent ;
import java.awt.event.KeyEvent ;
import java.awt.Color ;
import javax.swing.JFrame ;
import java.awt.event.ActionListener ;
import java.awt.event.WindowEvent ;
import java.awt.event.ActionEvent ;
import java.awt.Color ;
import java.awt.GridLayout ;
import java.awt.Font ;
import javax.swing.JFrame ;
import javax.swing.JButton ;
import javax.swing.JLabel ;
import javax.swing.JTextArea ;
import javax.swing.JPasswordField ;
import javax.swing.JScrollPane ;
import javax.swing.JPanel ;
class MyKeyHandle extends JFrame{
private JTextArea text = new JTextArea() ;
public MyKeyHandle(){
super.setTitle("Welcome To MLDN") ;
JScrollPane scr = new JScrollPane(text) ;
scr.setBounds(5,5,300,200) ;
super.add(scr) ;
text.addKeyListener(new KeyAdapter(){
public void keyTyped(KeyEvent e){
text.append("输入的内容是:" + e.getKeyChar() + "
") ;
}
}) ;
super.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(1) ;
}
}) ; // 加入事件
super.setSize(310,210) ;
super.setVisible(true) ;
}
};
public class MyKeyEventDemo02{
public static void main(String args[]){
new MyKeyHandle() ;
}
};
鼠标事件及监听处理
import java.awt.event.WindowAdapter ;
import java.awt.event.MouseAdapter ;
import java.awt.event.WindowEvent ;
import java.awt.event.MouseEvent ;
import java.awt.Color ;
import javax.swing.JFrame ;
import java.awt.event.ActionListener ;
import java.awt.event.WindowEvent ;
import java.awt.event.ActionEvent ;
import java.awt.Color ;
import java.awt.GridLayout ;
import java.awt.Font ;
import javax.swing.JFrame ;
import javax.swing.JButton ;
import javax.swing.JLabel ;
import javax.swing.JTextArea ;
import javax.swing.JPasswordField ;
import javax.swing.JScrollPane ;
import javax.swing.JPanel ;
class MyMouseHandle extends JFrame{
private JTextArea text = new JTextArea() ;
public MyMouseHandle(){
super.setTitle("Welcome To MLDN") ;
JScrollPane scr = new JScrollPane(text) ;
scr.setBounds(5,5,300,200) ;
super.add(scr) ;
text.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
int c = e.getButton() ;
String mouseInfo = null ;
if(c==MouseEvent.BUTTON1){
mouseInfo = "左键" ;
}
if(c==MouseEvent.BUTTON3){
mouseInfo = "右键" ;
}
if(c==MouseEvent.BUTTON2){
mouseInfo = "滚轴" ;
}
text.append("鼠标单击:" + mouseInfo + "
") ;
}
}) ;
super.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(1) ;
}
}) ; // 加入事件
super.setSize(310,210) ;
super.setVisible(true) ;
}
};
public class MyMouseEventDemo02{
public static void main(String args[]){
new MyMouseHandle() ;
}
};
鼠标拖拽事件及监听处理
import java.awt.event.WindowAdapter ;
import java.awt.event.MouseMotionAdapter ;
import java.awt.event.WindowEvent ;
import java.awt.event.MouseEvent ;
import java.awt.Color ;
import javax.swing.JFrame ;
import java.awt.event.ActionListener ;
import java.awt.event.WindowEvent ;
import java.awt.event.ActionEvent ;
import java.awt.Color ;
import java.awt.GridLayout ;
import java.awt.Font ;
import javax.swing.JFrame ;
import javax.swing.JButton ;
import javax.swing.JLabel ;
import javax.swing.JTextArea ;
import javax.swing.JPasswordField ;
import javax.swing.JScrollPane ;
import javax.swing.JPanel ;
class MyMouseMotionHandle extends JFrame{
public MyMouseMotionHandle(){
super.setTitle("Welcome To MLDN") ;
super.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
System.out.println("鼠标拖拽到:X = " + e.getX() + ",Y = " + e.getY()) ;
}
}) ;
super.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(1) ;
}
}) ; // 加入事件
super.setSize(310,210) ;
super.setVisible(true) ;
}
};
public class MyMouseMotionEventDemo02{
public static void main(String args[]){
new MyMouseMotionHandle() ;
}
};
2.其他需要总结的内容。
每个事件处理机制都有其方法完成操作,查看及使用api文档掌握操作
(二)实验总结
实验内容:
基本要求:
使用GUI,编写一个宠物商店管理系统实现对宠物信息的统一管理。假设宠物种类有猫、狗,宠物信息包括:编号、品种、年龄、数量、价格。系统启动进入登录界面,登录成功进入管理界面,否则提出错误信息后退出系统。
在管理界面实现以下功能:
(1)显示所有宠物列表
(2)添加宠物到列表
(3)删除宠物
(4)对宠物信息进行修改
(5)退出
程序设计思路:根据老师给出的代码,理解其内容,做出相应的修改,完成宠物商店界面的设置