布局管理器与事件处理

 

图形界面:

布局管理器:

CardLayout:卡片布局,面板重叠放置,只能看到一个,最先添加的会被显示出来,可以进行翻动

两种构造方法:

CardLayout() 

          创建一个间隙大小为 0 的新卡片布局。 

CardLayout(int hgap, int vgap) 

          创建一个具有指定的水平和垂直间隙的新卡片布局。 

          常用的方法:

previous(Container parent) 

          翻转到指定容器的前一张卡片。

          show(Container parent, String name) 

          翻转到已添加到此布局的具有指定 name 的组件

          next(Container parent) 

          翻转到指定容器的下一张卡片。

          first(Container parent) 

          翻转到容器的第一张卡片。

          last(Container parent) 

          翻转到容器的最后一张卡片。

         

          GridBagLayout:增强版的网格布局,组件可以跨行跨列的进行布局。

          构造方法:

          GridBagLayout() 

          创建网格包布局管理器。

          注意:

          该布局管理器的具体实现需要借助GridBagConstraints类,利用GridBagConstraints类的属性对组件进行设置,具体内容查看API文档。

         

菜单项:

JMenuBar:菜单栏的实现,将JMenu对象添加到菜单栏以构造菜单

构造方法:

JMenuBar() 

          创建新的菜单栏。

         

JMenu:菜单的该实现是一个包含JMenuItem的弹出窗口

构造方法:

JMenu(String s) 

          构造一个新JMenu,用提供的字符串作为其文本。

         

JMenuItem:菜单中的项的实现,菜单项本质上是位于列表中的按钮

构造方法:

JMenuItem(String text) 

          创建带有指定文本的JMenuItem。

         

AWT事件模型:

事件模型的三要素:

事件源(Object):事件的产生者。

事件(EventObject):描述发生了什么事情。  

事件监听(EventListener):事件的处理者

关系:

事件只与事件源有关,与事件监听无关

一个事件源可以注册多个事件监听。

一个事件监听器可以在多个事件源中注册。

一个事件源可以就同一类事件注册多个事件监听。

事件处理机制:委派式的处理机制(是一种松耦合)

组件自身会产生事件对象,但本身不一定负责处理,而是交给一个监听者去处理

实现监听的步骤:

a. 实现监听接口implements XxxxListener

b. 重写方法actionPerformed(ActionEvent e) 

c. 注册监听addXxxxListener(ActionListener l) 

适配器:一个重写了所有接口中方法的类

在java.awt.event包中,会有一些适配器,也就是把相应的XxxxListener,换成XxxxAdapter就是适配器。

在AWT中经常用匿名内部类来继承适配器做监听

 

 

 

观察者模式:

事件监听者对事件源进行监听,事件源会发生某些事件,监听者需要对事件作出相应的处理。

事件监听者(Observer):

处理事件

事件对象(Observable):

注册监听

取消监听

通知监听

编程步骤:

a. 定义一个监听者,使其实现Observer接口,实现其中的方法update(Observable o, Object arg)。

b. 定义一个事件对象,使其继承Observable类,定义一个产生事件的方法,在方法里去注册监听addObserver(Observer o)、标志改变setChanged()(如果不写,则说明该事件没有发生,监听者不会反映)、启动监听notifyObservers()。

注意:注册监听和标志改变不分先后,但标志改变和启动监听是不能互换的。

应用:当某事物发生变化,需要采取行动,则可以采用观察者模式。

适配器模式:

Adapter适配器模式是一种结构型模式,将两个互不兼容的类纠合在一起。

主要应对:由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是,新环境要求的接口是现存对象所不满足的。

作用:在不改变源代码的情况下实现需求。

 

java.math.BigDecimal:不可变的、任意精度的有符号十进制数。

必须用String类型进行构造,才能实现精确计算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值