北京圣思园_Java SE Lesson 11

来源:互联网 发布:linux中退出python 编辑:程序博客网 时间:2024/06/11 19:59

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的对象

PanelJava.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( )方法

 

 









 

 

 

原创粉丝点击