GUI组件上的图形操作

GUI图形用户界面(Granhical User  Interface)

一、AWT(Abstract Window Toolkit)的基础知识

1、JDK中提供AWT和Swing两个包,用于GUI程序的设计开发。

2、GUI组件可以分为两大类,基本组件和容器,分别是java.awt.Component和java.awt.Container的直接或间接的子类。

3、程序的GUI部分由AWT线程管理。

二、AWT事件处理

1、事件处理机制

2、事件分类

3、事件监听器

4、事件适配器

5、灵活设计事件监听器类

6、用匿名内置类实现事件监听器

三、事件处理机制   3个重要概念

1、事件:用户对组件的一个操作,称为一个事件

2、事件源:发生事件的组件就是事件源

3、事件处理器:某个java类中的负责处理事件的成员方法

事件分类

1、按事件的物理操作和GUI组件的表现效果进行分类:

      MouseEvent  鼠标事件   WindowEvent  窗口事件   ActionEvent   动作事件

2、事件的性质分类: 低级事件和语义事件(高级事件)

四、事件监听器

1、一个事件监听器负责处理一类事件

2、一类事件的每一种发生情况,分别由事件监听器对象中的一个方法来具体处理

3、在事件源和事件监听器对象中进行约定的接口类,被称为事件监听器接口

4、事件监听器接口类的名称与事件类的名称是相应的,如:MouseEvent事件类的监听器接口名为MouseListener   

总结:

处理发生在某个GUI组件上的XxxEvent事件的某种情况,其事件处理的通用编写流程:

1、编写一个实现了XxxEvent接口的事件监听器类

2、XxxEvent类中的用于处理该事件情况的方法中,编写处理代码

3、调用组件的addXxxListener方法,将类XxxListener创建的实例对象注册到GUI组件上。

五、事件适配器

由于监听器实际上就是实现了相应接口的类,而接口一般要求实现许多方法,如接口WindowListener中有7种方法,并不是所有的方法都是需要的,若实现该接口则要求实现所有的抽象方法。为了简化,java语言为一些接口提供了事件适配器(Adapter)。事件适配器是抽象类。通过继承事件适配器,重写需要的方法,不用的方法无须重写。

    java.awt.event包中提供了以下几个事件适配器:

    ComponentAdapter   组件适配器

    ContainerAdapter      容器适配器

    FocusAdapter             焦点适配器

    KeyAdapter                键盘适配器

    MouseAdapter            鼠标适配器

    MouseMotionAdapter  鼠标移动适配器

    WindowAdapter          窗口适配器

用事件适配器类处理事件,可以简化事件监听器的编写。

六、修改组件的默认事件处理方式

1、只有在一个组件注册了事件监听器对象后,组件才会产生相应的对象

2、默认的processEvent方法调用processXxxEvent方法

3、调用enableEvent(Longevent ToEnable)方法,可以在即使没有注册事监听器的情况下,组件也能够对某些类型事件进行相应和产生相应的事件对象。

七、Graphics类与图形绘制

Graphics类是java图形处理的基础,它支持两种绘图:一种是基本的绘图,如画线、画圆、矩形等;一种是画图像,主要用于动画制作等。

Graphics类代表画笔,提供了一系列的方法类实现基本图形元素的绘制,只要组合使用这些图形绘制方法,就可以得到想要的复杂图形。实际上Graphics类是一个抽象类,他提供的方法大部分都是抽象的方法。常见的有:

   draw Line(int x1,int y1,int x2,int y2)画一条直线

   drawString(String str,int left,int bottom):写一个字符串

   drawImage(Image image,int left,int top,ImageObserver observer):画一个图片

   drawOval(int x,int y,int width,int height):画一个椭圆

   drawRect(int left,int top,int width,int height):画一个矩形

   fillRect(int left,int top,int width,int height):填充一个矩形

   fillOval(int x,int y,int width,int height):填充一个椭圆

可以为Graphics对象设置绘图颜色和字体属性,方法为:

  setColor(Color color):设置画笔的颜色

  setFont(Font font):设置画笔的字体

如果程序没有显示调用Graphics对象的setColor()方法,Graphics对象将以组件的前景色作为默认的绘图颜色。drawString(String str,int s,int y)方法使用当前画笔的颜色和字体,将参数str的内容显示出来,并且最左边的字符的基线从坐标(x,y)开始。drawLine(int x1,int x2,int y1,int y2)表示画出一条直线,坐标(x1,y1)表示直线的起始点,坐标(x2,y2)表示直线的终点。

 八、双缓冲技术

1、Component.creatImage方法创建内存Image对象

2、在Image对象上进行绘制的结果就成了一副图像

3、在image对象上执行与组件表面同样的绘制,image对象中的图像是组件表面内容的复制,当组件重画时,只需将内存中的image对象在组件上画出。

九、常用的AWT组件

Canvas组件

1、Canvas是具有最基本和最简单的GUI功能的组件

2、Canvas代表屏幕上一块空白的矩形区域,程序能够在这个部件表面绘图,也能够捕获用户的操作,产生相应的事件

3、当要设计定制的具有GUI功能的组件类时,继承Canvas将会大大简化编程难度。

十、菜单

1、一个完整的菜单系统有菜单条,菜单和菜单项组成

2、java中与菜单相关的类有:MenuBar(菜单条);Menu(菜单);MenuItem(菜单项)

3、setActionCommand方法的作用

十一、Container

1、组件不能独立的显示出来,只能放在容器里

2、Container是所有容器类的父类,Container.add方法用于将组件添加到容器中。

3、Container也是Component的子类,因此也可以作为组件添加到其它容器上。

十二、Dialag与FileDialag类

1、Dialag类用于产生对话框

2、对话框分为模态对话框和非模态对话框:

3、常用的两个构造方法:

    public Dialag(Frame owner,String title)

    public Dialag(Frame owner,String title,boolean modal)

十三、Checkbox组件

1、checkbox用类建立单选按钮和多选按钮

2、创建多选按钮,只需要使用构造函数:

   checkbox(String label,boolean state,CheckboxGroup group)

3、单选按钮和多选按钮的语义事件为ItemEvent,对应的监听器接口为ItemListener,该接口只有一个itemStatsChange方法

十四、Choice

1、Choice类用来制作单选下拉列表框

2、choice类的语义事件为itemEvent,对应的监听器接口为itemListener,该接口只有一个itemStatsChange方法

十五、Panel与ScrollPane类

1、Panel类是一个容器类,用于产生一种特殊的空白面板,可以容纳其它的组件,但不能独立存在。

2、ScrollPane类是一种容器类,用于产生滚动窗口,通过滚动条在一个较小的容器窗口中显示较大的子部件。

布局管理器

1、一个容器中各个组件之间位置和大小关系就称之为布局。java语言提供了布局管理器来管理组件在容器中的布局,而不是直接使用位置坐标来设置各个组件的位置大小。

2、java为了实现跨平台的特性并获得动态的布局效果,将容器内的所有组件的大小、位置、顺序、间隔等交给布局管理器负责,共有5种布局管理器:FlowLayout、BorderLayout、GridLayout、CardLayout、GridBagLayout。所有的容器都会引用一个布局管理器实例,通过它来自动进行组件的布局管理。

3、默认的布局管理器

   当一个容器被创建后,它们有相应的默认布局管理器。Window、Frame和Dialag的默认布局管理器是BorderLayout,Panel的默认布局管理器是FlowLayout。

4、流式布局管理器(FlowLayout)

FlowLayout是把组件从左向右、从上向下,一个接着一个的放在容器中,组件之间的默认间隔(水平和垂直)为5个像素,默认的组件对齐方式为居中,组件的大小由布局管理器根据组件的最佳尺寸类决定。

  FlowLayout的构造方法如下:FlowLayout(int align,int hgap,vgap)

功能:参数align用类决定组件在每行中相对于容器的边界对齐方式。参数hgap,vgap分别设定组件之间的水平和垂直间隙。

5、边界布局管理器(BorderLayout)

BorderLayout是Window、Frame、Dialog的默认布局管理器,它将容器分成5个区域来安排组件:North、South、East、West、Center。    BorderLayout的构造方法如下:  BordreLayout(int hgap,int vgap)

功能:参数hgap和vgap分别设定组件之间的水平和垂直间隙。

6、网格布局管理器(GridLayout)

GridLayout是将容器分为一个个格子,按行依次排列组件,各组件大小相同。

GridLayout的构造方法如下:  GridLayout(int  rows,int cols,int hgap,int vgap)

功能:rows代表行数,cols代表列数,hgap和vgap规定网格之间的水平和垂直间隙。

7、卡片布局管理器(CardLayout)

CardLayout将界面看成一系列卡片,在任何时候只有一张卡片是可见的,这张卡片占据容器的整个区域。

CardLayout的构造方法:CardLayout(int hgap,int vgap)

功能:参数hgap表示卡片和容器左右边界值之间的间隙,参数vgap表示卡片和容器上下边界的间隙。

8、取消布局管理器

调用Container.setLayout(null)方法取消布局管理器设置,在这种情况下,可以调用Component.setBounds方法来用绝对坐标设置

容器上的每个组件的大小和位置

不适用布局管理器将会给程序带来潜在的问题,当容器大小改变时,所有组件保持原来的大小和位置,导致程序界面“难看”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值