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”,设置搜索时间段,搜索本周提交历史,并截图。

原文地址:https://www.cnblogs.com/HQY110/p/6838659.html