zoukankan      html  css  js  c++  java
  • Java第七次作业--图形用户界面

    (一)学习总结

    1.写出事件处理模型中的几个关键词,并通过具体代码实例说明你对事件处理模型的理解。

    • 事件就是承载事件源状态改变时的信息对象。java.awt.event包和javax.swing.event包中定义了各种事件类,类名以Event结尾。
    • 对所有组件进行事件处理来让每一个组件都发挥自己的作用;
    • 事件就是表示一个对象的发生状态变化,若想处理此事件,就需要事件的监听者不断监听事件的变化,并根据这些事件进行相应的处理;
    • Swing编程中,使用了最早AWT的事件处理方式,所有的事件类都是EventObjet类的子类;

    EventObject类的定义格式:

    public class EventObject extends Objet implements Serializable{
         public EventObject(Objet source){
         }
         public Object getSource(){
         }
         public String toString(){
         }
    }
    
    • 大部分图形界面的事件处理类或接口都保存在java.awt.evet包中;
    • 如果没有能够接受和处理事件的对象,图形界面程序所生成的一切事件都是无用的,这些事件接收对象被称为事件接听器
    • 所有的事件监听器都是以监听接口的形式出现的,处理时只需要实现此接口即可;
      事件处理步骤:
    • 确定事件类型后,需要进一步确定处理该事件的监听器接口,如ActionEvent事件对应的接口是ActionListener。确定接口后,需要自定义事件处理类实现该接口。
    • 自定义类实现监听器接口后,需要覆盖监听器中特定的方法。监听器接口中可能声明了多个方法,事件处理机制会根据用户的不同操作自动调用不同的方法。
    • 实现监听器后,需要对事件源注册监听器,方能生效。每个组件都有一系列的addXXXListener方法,可以用来为组件注册不同的监听器。
    public class QuitHandler implements ActionListener{
          public void actionPerformed(ActionEvent arg0) {
    
            }
    }
    
    
    public void actionPerformed(ActionEvent arg0) {
            System.exit(0);
    }
    
    
    
    quit.addActionListener(new QuitHandler());
    
    • 内部类是外部类的一个成员,可以直接使用外部类的属性和方法。在GUI事件处理中,经常使用内部类。
    • Send按钮进行事件处理,实现发送消息的功能。事件源:Send按钮,事件类型:ActionEvent,事件监听器接口:ActionListener,定义事件处理类SendHandler实现ActionListener接口,并覆盖其中的ActionPerformed方法,用addActionListener方法对Send按钮注册监听器。
    public class SendHandler implements ActionListener{
         public void actionPerformed(ActionEvent e) {
               output.append(input.getText()+"
    ");
               input.setText("");
        }
    }
    
    

    -SendHandler类中需要使用ChatRoom类的output和input属性,那么SendHandler类应该作为ChatRoom类的内部类存在,才能直接使用外部类的属性。

    public class ChatRoom{
       .......
       public class SendHandler implements ActionListener{
         public void actionPerformed(ActionEvent e) {
               output.append(input.getText()+"
    ");
               input.setText("");
        }
    ......
    }
    
    
    
    • 内部类SendHandler进行事件处理时,只需实例化一个对象作为Send按钮的ActionEvent事件的监听器对象,那么就可以使用匿名内部类来实现。
    send.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e) {
              output.append(input.getText()+"
    ");
              input.setText("");
         }
    });
    
    • 在事件处理中提供了很多的Adapter(适配器)类,它们是监听器接口的默认实现类。通过继承适配器类来实现监听器接口时,只需直接重写需要处理事件对应的方法即可,无需处理接口的其他方法,可以方便用户进行事件处理的实现。
    • KeyListener接口有三个方法:
      1.void keyTyped(KeyEvent e)键入某个键时调用
      2.void keyPressed(KeyEvent e)键盘按下时调用
      3.void keyReleased(KeyEvent e)键盘松开时调用
    • 实现在文本框输入后回车完成信息的发送:
      事件源:input按钮,事件类型:KeyEvent,事件适配器类:KeyAdapter,重写其中的keyReleased(KeyEvent e)方法,用匿名内部类实现。
    • 此功能也可以通过捕获文本框的ActionEvent事件完成
    input.addKeyListener(new KeyAdapter(){
    public void keyReleased(KeyEvent e){
    int KeyCode = e.getKeyCode();
    if (KeyCode==KeyEvent.VK_ENTER){
    output.append(input.getText()+"
    ");
    input.setText("");
    }
    
    

    (二)实验总结

    实验内容:
    基本要求:
    使用GUI,编写一个宠物商店管理系统实现对宠物信息的统一管理。假设宠物种类有猫、狗,宠物信息包括:编号、品种、年龄、数量、价格。系统启动进入登录界面,登录成功进入管理界面,否则提出错误信息后退出系统。
    在管理界面实现以下功能:
    (1)显示所有宠物列表
    (2)添加宠物到列表
    (3)删除宠物
    (4)对宠物信息进行修改
    (5)退出
    功能扩展:
    用户分为管理员和普通用户两种,增加普通用户注册功能,增加普通用户界面。
    实现以下功能:
    (1)显示所有宠物
    (2)能够按照品种对宠物进行查找
    (3)购买宠物
    (4)显示购买清单
    (5)退出

    (三)代码托管(务必链接到你的项目)

    码云commit历史截图
    上传实验项目代码到码云,在码云项目中选择“统计-commits”,设置搜索时间段,搜索本周提交历史,并截图。

    https://git.oschina.net/hfja/java-CS02hfj.git

  • 相关阅读:
    【原】webpack--loaders,主要解释为什么需要loaders和注意事项
    【原】通过npm script运行webpack的原理
    原生js深拷贝函数
    git add 添加错文件的撤销方法
    item2 快捷键
    sudo su 和sudo -s的区别
    nvm常用命令
    【雅思】【口语】Describe a product you bought and felt happy
    【雅思】【口语】Help others
    【雅思】【口语】
  • 原文地址:https://www.cnblogs.com/hfja/p/6830460.html
Copyright © 2011-2022 走看看