javaGUI学习30:AWT-无鼠标操作与打印

无鼠标操作使用户可以利用键盘输入代替鼠标,从而减少专业用户的手动量。AWT支持下面两个领域的无鼠标操作:用Tab键切换构件与菜单快捷键。
现有AWT图形模型中无缝嵌入了打印支持。因此,打印支持不仅很直接,而且也容易使用。但打印支持的机制也存在一个反面影响,它使实现独立于平台的打印需要很难的技巧性,因此关于打印仍然有一些需要着重声明的技巧。

1、无鼠标操作

无鼠标操作封装了两个机制:键盘遍历与菜单快捷键,两者都很容易实现。我们将首先介绍键盘遍历,然后接着介绍菜单快捷键。

2、键盘遍历
  • GUI用户希望能够用鼠标或键盘,实现用户界面构件的浏览。虽然最初版本AWT中的所有构件,都可以利用鼠标激活,但键盘遍历的显式支持却只有当本地窗口系统支持该操作时才可用。由于不同平台上的键盘遍历互不相同,因此基本AWT代码中不支持键盘遍历操作。
  • AWT 为不同平台提供了统一的构件焦点移动机制:用Tab键可将构件焦点移动到下一个构件;用 Shift与 Tab的组合键则将构件焦点移动到前一个构件。
  • 哪个构件位于另一构件的前面或后面(即遍历顺序)是由构件添加到容器的顺序所定义的。如果容器内添加的第一个构件获取焦点,则Tab键可以将焦点移动到第二个被添加到容器内的构件,若随后按 Shift与’Tab组合键,则可以将焦点移回到第一个被添加到容器内的构件。
  • 但是,需要注意的是:并非所有的构件都愿意在每个平台上获取焦点。例如:按钮可以在Windows 95与Motif 系统下获取焦点,而Macintosh系统下的按钮则不应该获取焦点。因此,java . awt . component类中提供 isFocusIraversable方法,如果构件支持获取焦点,则该方法返回逻辑值 true,否则返回值为false。
2.1 标准AWT构件与键盘遍历
  • java.awt. Window 保持与java.awt . FocusManager实例的联系。
  • FocusManager类跟踪当前拥有焦点的构件,并响应Tab键与Shift + Tab,向前或向后移动焦点。如果用户只需要处理标准AWT构件,则不必考虑构件的键盘遍历操作,而只需要按照理想的键盘遍历顺序向容器内添加构件。
3、菜单快捷键

菜单快捷键提供利用键盘操作激活菜单项的能力。快捷键拥有一个键盘修饰量,这个修饰量随平台不同而不同。其中,在Macintosh系统中,修饰量为;在Windows 95系统中,修饰量为 , Motif 系统下的修饰量则为 。
java. awt . Toolkit类提供可返回恰当修饰量的方法一Toolkit . getMenuShortcutKeyMask ()。当需要利用程序确定特定平台上的修饰量时,可以利用该方法。

菜单项必须提供某种可视化的表示,提示用户当需要使用该菜单项时,可利用快捷键激活该菜单项。这些可视化表示由AWT按照依赖于平台的方式进行处理,它随平台的不同而不同。

java.awt.MenuShortcut类、java.awt.MenuItem类、java.awt.MenuBar类三个类中的相关方法。

4、打印

Java允许用户打印–种Graphics对象,但并不是任何Graphics对象,用户只能打印一个PrintGraphics对象。

可以在Graphics对象中手工绘制图形,也可以把构件画进Graphics对象。因此,只要在Graphics对象中完成绘制操作,用户即可随时启动Graphics对象的打印操作。如果在.Graphics对象中打印某个构件且该构件为容器对象,则用户可以选择打印容器对象层次中的任意构件。

4.1 获取PrintGraphics的引用

如果用户希望绘制一个构件一个容器层次中的多个构件,或者仅仅希望在Graphics对象中完成绘制操作,则都需要首先获取 PrintGraphics类的引用。PrintGraphics类是Graphics类的一-个特殊扩展。获取 PrintGraphics类的引用主要包括如下4个操作步骤:

  • 获取框架的引用。
  • 获取默认工具集的引用。
  • 用步骤1中获得的框架作为参数调用工具集的 getPrintJob方法,返回 PrintJob方法的引用。
  • 调用打印工作的 getGraphics方法,返回 PrintGraphics类的引用。

一旦用户成功获取PrintGraphics对象的引用,则可以将该引用传递到构件的 print方法或printall方法,也可以像对任意图形对象一样,在其内部绘制图形。若希望打印图形,则仅仅需要调用图形的dispose方法,该方法可以将图形对象发送(flush)到打印机。完成打印操作以后,应该调用步骤3中获取的PrintJob 的end ()方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值