第11章 AWT编程

1.GUI(图形用户界面)和AWT

AWT是窗口框架,它从不同的平台的窗口系统中抽取出共同组件,当程序运行时,将这些组件的创建和动作委托给程序所在的运行平台(并未提供真正的实现),由JVM调用系统本地的图形界面来创建和平台一致的对等体。

所有和AWT编程相关的类都放在java.awt包以及它的子包中,AWt编程有两个基类:Component和MenuComponent。

此外,还有Container和LayoutManger,其中Container是一种特殊的Component,它代表一种容器,可以盛装普通的Component,而LayoutManger则是容器管理其它组件布局的方式。

 

 

2.AWT容器

容器Container是Component的子类,AWT主要提供了两种主要的容器类型:

Window:可独立存在的顶级窗口;Frame代常见的窗口,是Window类的子类,初始化时不可见,可用setVisible(true)使其显示出来。

Panel:可作为容器容纳其他组件,但不能独立存在,必须添加到其他容器中。可将Panel对象添加到Frame对象中。

ScrollPane是一个带滚动条的容器,它也不能独立存在,必须被添加到其他容器中。默认使用BorderLayout作为其布局管理器。可用来替换Panel。

 

3.布局管理器

共5个常用的布局管理器

(1)FlowLayout

从左到右排列,遇到边界即折回下一行(垂直间距,水平间距)

(2)BorderLayout

North,South,East,West,Center(默认布局在Cenetr区域)

(3)GridLayout

横纵线网格(横纵向间距)

(4)GridBagLayout

可设置网格大小(需要GridBagConstraints对象控制组件)

(5)CardLayout

卡片式设计,每次仅可见第一张

(6)BoxLayout

Swing新的布局管理器,垂直和水平摆放,Box容器提供间距Glue,Strut,RigidArea

 

4.对话框Dialog

对话框通常依赖其他窗口,对话框有模式和非模式两种。如果主程序需要对话框里接收的输入值,则应该把该对话框设置成模式对话框,因为模式对话框会阻塞该程序。

Dialog类还有一个子类FileDialog,代表一个文件对话框,用于打开或保存文件。

FileDialog提供了如下两个方法来获取被打开/保存文件的路径:

getDirectory():获取FileDialog被打开/保存的文件的绝对路径

getFile():获取FileDialog被打开/保存文件的文件名

 

5.事件处理

三类对象:EventSource(事件源)、Event(事件)、EventListener(事件监听器)

流程为:

  1. 将事件监听器注册到事件源
  2. 外部动作(如鼠标)触发事件源上的事件
  3. 事件源生成事件对象
  4. 触发事件监听器,事件被作为参数传入事件处理器
  5. 调用事件处理器做出响应(就是实现某个Listener接口)

AWT的事件类都是AWTEvent类的子类,AWTEvent是EventObject的子类。

AWT事件分为低级事件与高级事件,最常用的就是匿名内部类实现监听器。

 

6.AWT菜单

MenuItem(菜单项组件),Menu(菜单组件) ,MenuBar(菜单条,菜单的容器)

(1)Menu的add()

组合多个MenuItem —>菜单

(2)MenuBar的add()

组合多个Menu—>菜单条

(3)Frame对象的setMenuBar()

用于添加菜单条

 

7.在AWT中绘图

在Component类里提供了和绘图有关的三个方法:

paint(Graphics g):绘制组件的外观

update(Graphics g):调用paint()方法,刷新组件外观

repaint():调用update()方法,属性组件外观

 

8.处理位图

Graphics提供了drawImage方法用于绘制位图,该方法需要一个Image参数(代表位图)。

当需要向GUI组件上绘制图形时,不要直接绘制到GUI组件上,而是先将图形绘制到BufferedImage对象中,然后再调用组件的drawImage方法一次性的将BufferedImage对象绘制到特定组件上。

 

9.剪贴板

剪贴板相关操作的接口和类被放在java.awt.datatransfer包下:

Clipboard:代表一个剪贴板实例

Transferable:该接口的实例代表放进剪贴板中的传输对象

DataFLavor:用于表述剪贴板中的数据格式

StringSelection:Transferable的实现类,用于传输文本字符串。

传递文本的步骤:

  1. 创建Clipboard实例,可创建系统剪贴板或本地剪贴板
  2. 将需要放入剪贴板的字符串封装成StringSelection对象(ImageSelection对象)
  3. 将StringSelection放入剪贴板中,即setContents()方法
  4. 取出数据,调用clipboard对象的getdata(DataFlavor flavor)方法

ImageSelection类实现Trandferable接口及接口内的三个方法(因为Transferable接口中只有StringSelection实现类,只能实现字符串)而DataFlavor类中提供imageFlavor常量,表示图像格式的DataFlavor

方法1:构造器,持有一个Image对象

方法2:获取Transferable对象所支持的DataFlavor,即DataFlavor.imageFlavor

方法3:取出Transferable对象里实际的数据。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值