• JAVA第七次作业


    Java第七次作业

    (一)学习总结

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

    • 关键词:
      事件源、事件、事件监听器接口。
      事件源:是一个产生(或触发)事件的对象。
      事件:承载事件源状态改变时的信息对象。
      事件监听器接口:定义了处理对应事件的接口,事件监听者实际上是一个类。

    通过事件监听器监听事件源是否产生事件,如果产生,则将事件的对象传入到事件监听器中,执行监听器的相应方法来处理事件。为了让事件源知道要把事件传递给哪一个“事件监听者”,必需先把“事件监听者”在事件源注册。

    • 理解:

       public class MainGUI {
           public static void main(String[] args) {
               JFrame f = new JFrame("Test");
               f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               JButton b = new JButton("Press Me!");//事件源
               b.addActionListener(new ButtonHandler());//注册监听器
               f.add(b);
              f.setSize(200, 100);
              f.setVisible(true);
           }
           private static class ButtonHandler implements 
          ActionListener{//监听器
               public void actionPerformed(ActionEvent e) {
                   System.out.println("Action occurred");
                   System.out.println(e.getSource());//获得事件源
               }
           }
       }
      

    首先定义事件源JButton b = new JButton("Press Me!");表示点击该按钮时为事件的产生。然后b.addActionListener(new ButtonHandler());注册监听器,并且在类中实现监听接口,写出当在事件源中监听到事件发生时e.getSource(),执行的程序,此例中为System.out.println("Action occurred");。

    2.其他需要总结的内容。

    • java.awt 包:
      java.awt 包中提供了 GUI 设计所使用的类和接口,提供了基本的 java 程序的 GUI 设计工具。
      主要包括下述三个概念:
      1).组件(Component)---按钮、标签、菜单等组件的抽象基本类.
      2).容器(Container)---有两类:窗口Window(可以独立存在)和面板Panel(必须放在其他容器内). 而窗口类又分为框架Frame和对话框Dialog.
      3).布局管理器(LayoutManager)---定义容器中组件摆放位置和大小接口.AWT 中的五种布局管理器:
      边界布局管理器(BorderLayout),流式布局管理器(FlowLayout), 网格布局管理器(GridLayout), 卡片布局管理器(CardLayout), 网格包布局管理器(GridBagLayout).
      窗体(Frame,Dialog)的默认布局为 BorderLayout(边界布局管理器)。
      面板()的默认布局管理器是 FlowLayout 布局管理器。
      4).Graphics(图形类)——组件内与图形处理相关的类.

    • Frame和JFrame(框架):
      Frame 是带有标题和边框的顶层窗口。窗体的默认布局为 BorderLayout(边界布局管理器)。
      JFrame 类是AWT Frame 类的一个子类。它还加入了一些 Swing 所独有的特性。与 Frame 的使用十分相似。唯一的区别在于,你不能将组件加入到JFrame中。你可以将组件加入到 JFrame 的contentpane(内容面板) 中,或者提供一个新的contentpane(内容面板)。

    • Panel和JPanel(面板):
      Panel 是最简单的容器类。不能独立存在,必须依赖其他容器才能显示,可放置其他组件,甚至其他面板,自然就可设置布局管理器,其默认布局管理器是 FlowLayout (流式布局管理器)。
      JPanel 是一般轻量级容器.

    • java图形用户界面的构成:
      容器,控制组件和用户自定义成分(自定义的图形或者标志,不能实现交互)

    • Java中的绘图操作:
      Java 中使用Graphics对象可以进行各种绘图操作。

           //继承Panel类
           public class TestDraw extends Panel{
              //重写paint()方法,窗口刷新时自动执行paint()方法。
              public void paint(Graphics g){
              g.drawOval(50,50,30,30); //画椭圆
              }
            }
      

    (二)实验总结

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

    完成实验内容,代码上传到码云,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。
    格式如下:

    • 程序设计思路:用户注册系统,设计UsersJFame窗口,显示用户注册页面,定义各属性和输入文本框的位置及大小,定义一个面板,放置注册按钮。

      宠物信息窗口,定义三个按钮,查找,购买和显示清单,两个存储工具,分别存储宠物列表和购买的宠物清单。

    注册按钮调用注册用户的检查程序,参考程逸飞的实验六,但是未能实现之间的联系。
    购买,从原宠物列表中删除,然后添加到显示列表信息中,将购买信息存储到新建的表格中

    • 类图结构:

    • 问题1:老师给的程序复制粘贴到eclipse时,全是错
      原因:程序需要的包,没有导入
      解决方案:询问同学,将老师发的文件夹解压之后直接导入到eclipse
      问题2:添加和修改的文本框,只能显示4个,因此点击添加按钮和修改按钮时出错

        updateNumberText.setBounds(50, 310, 40, 25);
        updatePinText.setBounds(150, 310, 40, 25);
        updateAgeText.setBounds(250, 310, 40, 25);
        updateNText.setBounds(350, 310, 40, 25);
        updatePriceText.setBounds(250, 310, 40, 25);
      



    原因:复制粘贴的语句,没有注意到文本框大小和位置,两条语句重复了
    解决方案:修改各文本框的大小

    • 问题3:注册按钮显示不出来
      原因:定义位置时出错

        JPanel btnPanel = new JPanel();
        		btn.setBounds(150, 350, 100, 90); // 定义按钮边界位置
        		this.add(btnPanel);
        		btnPanel.add(btn);
      

    解决方案:修改程序,定义按钮面板位置

    JPanel btnPanel = new JPanel();
    		btnPanel.setBounds(150, 350, 100, 90); // 定义按钮边界位置
    		this.add(btnPanel);
    		btnPanel.add(btn);
    
    • 问题4:有想法,但是没有实现查找,和显示清单功能

    (三)代码托管

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

  • 相关阅读:
    3星|《全球电商进化史》:全球电商亲历记
    2星|陈春花《共生》:逻辑差语文差缺证据。不敢相信知名商学院教授的书居然这么差
    3星|《第五次开始》:考古学家写的人类简史与未来简史
    4星|《财经》2018年第21期:互联网处方能解决药品质量和价格问题
    2.5星|托夫勒《权力的转移》;30年旧书,现在看理论有点牵强肤浅,预测有的准有的不准
    2018左其盛好书榜(截至9月15日)
    沟通交流技巧相关的11本书点评
    没睡好觉的上级更容易辱骂下属:3.5星|《哈佛商业评论》第9期
    3星|《利润模式》:20年旧书,30种模式
    在 C# 中通过 P/Invoke 调用Win32 DLL
  • 原文地址:https://www.cnblogs.com/HQY110/p/6838659.html
Copyright © 2020-2023  润新知