Java SE Lesson 11

1.  所谓自定义异常,通常就是定义了一个继承自Exception类的子类,那么这个类就是一个自定义异常类。通常情况下,我们都会直接继承自Exception类,一般不会继承

某个运行时的异常类。

3.  如果try 块中存在return 语句,那么首先也需要将finally块中的代码执行完毕,然后方法再返回。例如:

try

{

System.out.println("进入到try块");    // 第 1 次打印

System.exit(0);                     //  执行了 finally 中的语句后就会退出方法

}

catch(Exceptionex)

{

System.out.println("异常发生了");

}

finally

{

System.out.println("进入到finally块");     //  第2条打印语句

}

System.out.println("异常处理后续的代码");     //  这 条语句不会执行

}

4.  如果try 块中存在System.exit(0)语句,那么就不会执行finally块中的代码,因为System.exit(0)会终止当前运行的Java虚拟机,程序会在虚拟机终止前结束执行。

5. GUI(Graphical User Interface),图形用户界面。

基本组件     容器

容器 :  窗口  对话框   所有的容器类都是 java.awt.Container 的直接、间接子类。

6. AWT(AbstractWindow Toolkit),抽象窗口工具集,第一代的JavaGUI 组件,是重量级的。基本的AWT库处理用户界面元素的方法是把这些元素的创建和行为委托给每个目标平台上(Windows、Unix、Macintosh等)的本地GUI工具进行处理。不同的平台效果不同。

7. Swing,不依赖于底层细节,轻量级的组件。

• Panel是Java.awt.Panel的对象

–Panel是Java.awt.Panel的对象。Panel包含在另一个容器中,或是在Web浏览器的窗口中Panel确定一个四边形,其它组件可以放入其中。Panel必须放在Window之中(或Window的子类中)以便能显示出来

–在框架显示在屏幕上之前,必须做成可见的(通过调用程序setVisible(true)),而且其大小是确定的(通过调用程序setSize()或pack())

java.lang.Object

|

+----java.awt.Component

|

          +----java.awt.Container

                   |

                  +----

java.awt.Window                                              java.awt.Panel

                           |

                                +----

java.awt.Frame                                           java.awt.Dialog

• 在AWT中,给我们提供了五种布局管理器:

BorderLayout

FlowLayout

GridLayout

CardLayout

GridBagLayout

• 容器中组件的布局通常由布局管理器控制。每个Container(比如一个Panel或一个Frame)都有一个与它相关的缺省布局管理器,它可以通过调用setLayout()来改变

改变布局管理器:

frame = new Frame("gui example");

frame.setLayout(new FlowLayout());

布局管理器:

BorderLayout是Frame类的默认布局管理器 ,BorderLayout 也是一个类

    BorderLayout将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域。                  组件大小改变,相对位置不变

•     Flow布局管理器不限制它所管理的组件的大小,而是允许它们有自己的最佳大小。 默认是居中放置组件      组件大小不变,位置改变

newFlowLayout(FlowLayout.RIGHT,20,40);

右对齐,组件之间水平间距20个像素,竖直间距40个像素;

newFlowLayout(FlowLayout.LEFT);

左对齐,水平和竖直间距为缺省值:5;

new FlowLayout();

使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;

Grid布局管理器为放置组件提供了灵活性。用许多行和栏来创建管理程序。然后组件就填充到由管理程序规定的单元中。将组件添加到网格中的命令决定它们占有的单元。单元的行数是从左到右填充,就像文本一样,而列是从上到下由行填充。

 Panel

–Panel无法单独显示,必须添加到某个容器中。

–Panel的缺省布局管理器为FlowLayout。

–当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某个区域显示多个组件。

在程序中安排组件的位置和大小时,应注意

–容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况下设置组件的这些属性。如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。

–如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:

setLayout(null);

Java SE Lesson 12

AWT 事件模型:

–-编写代码来处理在图形用户界面中发生的事件。

–-描述Adapter类的概念,包括如何和何时使用它。

–-根据事件对象的细节来确定产生事件的用户动作。

–-为各种类型的事件创建合适的接口和事件处理。

•-事件-描述发生了什么的对象

•-事件源-事件的产生器

•-事件处理器-接收事件、解释事件并处理用户交互的方法

2.  当单击一个按钮时就会产生一个事件(ActionEvent),然后检查是否有与该按钮关联的事件处理器(实际上就是一个方法),如果没有,那么什么都不执行;如果有,就会将该事件传递给与该按钮关联的事件处理器方法,作为该方法的参数,之后该事件处理器方法就会自动得到调用,并且该方法可以使用传递过来的ActionEvent对象,进而获得事件发生时与该事件及事件源相关联的那些信息。

3. Java中的组件若想添加事件处理器,都会使用形如addXxxListener的方法来添加。

类                               对应事件说明

MouseEvent                鼠标事件

鼠标按下,鼠标释放,鼠标点击等

WindowEvent              窗口事件

点击关闭按钮,窗口得到与失去焦点,窗口最小化等

ActionEvent                动作事件不代表具体的动作,是一种语义,如按钮或菜单被鼠标单击,单行文本框中按下回车键等都可以看作是ActionEvent事件

方法类型和接口:

适配器:

• 你定义的Listener可以继承Adapter类,而且只需重写你所需要的方法

• 为了方便起见,Java语言提供了Adapters类,用来实现含有多个方法的类。这些Adapters类中的方法是空的。

•你可以继承Adapters类,而且只需重写你所需要的方法

为简化编程,JDK针对大多数事件监听器接口定义了相应的实现类,我们称之为事件适配器(Adapter)类

在适配器类中,实现了相应监听器接口所有方法,但不做任何事情,只要继承适配器类,就等于实现了相应的监听器接口

如果要对某类事件的某种情况进行处理,只要覆盖相应的方法就可以,其他的方法再也不用“简单实现”了

如果想用作事件监听器的类已经继承了别的类,就不能再继承适配器类了,只能去实现事件监听器接口了,java中是单继承的。

 

观察者模式:

• 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己。

•观察者模式在Java语言中的地位极其重要

• JDK也提供了对观察者模式的内置支持

• Observable类用于创建可以观测到你的程序中其他部分的子类。当这种子类的对象发生变化时,观测类被通知。观测类必须实现定义了update()方法的Observer接口。当一个观测程序被通知到一个被观测对象的改变时,update( )方法被调用。

• 一个被观测的对象必须服从下面的两个简单规则。第一,如果它被改变了,它必须调用setChanged( )方法。第二,当它准备通知观测程序它的改变时,它必须调用notifyObservers( )方法。这导致了在观测对象中对update( )方法的调用。注意——当对象在调用notifyObservers( )方法之前,没有调用setChanged( )方法,就不会有什么动作发生。在update( )被调用之前,被观测对象必须调用setChanged( )和notifyObservers( )两种方法。

• 为了观测一个可观测的对象,必须实现Observer接口。这个接口仅仅定义了如下所示的一个方法。

–void update(Observable observOb, Object arg)

–这里,observOb是被观测的对象,而arg是由notifyObservers( )方法传递的值。当被观测对象发生了改变,调用update( )方法

北京圣思园_Java SE Lesson 11相关推荐

  1. 圣思园——Java SE Lesson 11

    1. 所谓自定义异常, 通常 就是定义了一个继承自 Exception 类的子类,那么这个类就是 一个自定义异常类.通常情况下,我们都会直接继承自 Exception 类, 一般 不会继承 某个运行时 ...

  2. 圣思园——JAVA SE Lesson 1

    1. 类是一种 抽象 的概念,对象是类的一种具体表示形式,是 具体 的概念.先有类,然后由类来生成对象( Object).对象又叫做实例( Instance ). 2. 类由两大部分构成:属性以及方法 ...

  3. 圣思园——Java SE Lesson 2

    1. 多态:父类型的引用可以指向子类型的对象. 2. Parent p = new Child(); 当使用多态方式调用方法时,首先检查父类中是否有sing() 方法, 如果没有则编译错误:如果有,再 ...

  4. 圣思园——Java SE Lesson 6

    1. 当向ArrayList添加一个对象时,实际上就是将该对象放置到了 ArrayList 底层所维护的数组当中:当向 LinkedList 中添加一个对象时,实际上 LinkedList 内部会生成 ...

  5. 圣思园——Java SE Lesson 4

    1. 包装类(Wrapper Class).针对于原生数据类型的包装.所有的包装类(8 个)都位于 java.lang 包下.Java 中的 8个包装类分别是:Byte, Short, Integer ...

  6. 圣思园——Java SE Lesson 5

    1. 对于Java中的常量的命名规则:所有单词的字母都是大写,如果有多个单词,那么使用下划线连接即可.比如说:public static final int AGE_0F_PERSON = 20; 2 ...

  7. 圣思园-----Java SE Lesson 7

    1. 有这样一个类: // getter and setter 要求:假如有若干个类 Person 对象存在一个 List 当中,对他们进行排序,分别按照名字.年龄. id 进行排序(要有正序与倒序两 ...

  8. 圣思园——Java SE Lesson 16

    1. 如果某个 synchronized 方法是 static 的,那么当线程访问该方法时,它锁的并不是synchronized 方法所在的对象, 而是 synchronized 方法所在的对象所对应 ...

  9. 圣思园java.doc_北京圣思园java课堂笔记.doc

    北京圣思园java课堂笔记.doc JAVASELesson11.类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成对象(Object).对象又叫做实例(Instan ...

最新文章

  1. mongodb windwos 安装(转)
  2. 机器学习的最佳学习路线,就在这里!
  3. make文件基础用法
  4. 基于JAVA+SpringMVC+MYSQL的医院皮试管理系统
  5. Arcgis javascript那些事儿(十九)——地图标注添加
  6. vue 后端返回图片乱码处理方法
  7. 基于SSM的社区消毒防疫物资系统
  8. javasocket编程(javasocket通信)
  9. 电力系统通信与网络技术/智能变电站个人总结
  10. 科普知识:深网和暗网
  11. Matlab中dir使用中遇到的一些问题
  12. XRecycleView (Scrapped or attached views may not be recycled)
  13. 推荐一款绘图神器visual-paradigm
  14. 【完整教程】nginx反向代理wss,实现不修改服务器端websocket代码加密通讯请求
  15. Scratch之制作幸运抽奖机
  16. php获取客户端真实ip
  17. 白嫖小程序云存储空间,手撸你的专属云盘
  18. 扩展欧几里得算法 | exgcd 证明 + 板子 + 习题
  19. rabbitmq-exclusive queue
  20. mel频谱--学习笔记

热门文章

  1. 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
  2. base ring shell skirt skirt 压力容器_压力容器工程规定(2)
  3. 【小程序源码】视频壁纸支持多种分类短视频另外也有静态壁纸
  4. 使用java抓取金山词霸的每日一句
  5. Django源码cookie解读:关于中文cookie会被吞掉并截断的问题。
  6. Django写一个登录注册---001创建项目以及设计数据库
  7. Revit SDK 介绍:ModelessForm_ExternalEvent ModelessForm_IdlingEvent
  8. Docker查看container的详细信息啥的*
  9. NVIDIA NCCL 源码学习(二)- bootstrap网络连接的建立
  10. 实用分享|多台4G工业路由器与华为USG6300搭建IPsec