javaGUI学习34:AWT-橡皮带技术

橡皮带操作主要用于动态更新几何形状的边界。由于橡皮带操作通常在用户按下鼠标键时开始,拖动鼠标时继续。在操作过程中,屏幕上将出现一个几何形状跟踪鼠标的运动,即几何形状边界是随用户的鼠标拖动操作而实时更新的。其中,几何形状的一角由鼠标开始击取的点定义,而其对角则由鼠标指针的位置定义,而且这个对角随鼠标移动而改变,用户在屏幕上可以看到几何形状随鼠标的移动而不断伸缩,像橡皮带一样,这也正是橡皮带技术的命名由来。
当然,利用AWT构件很容易完成几何形状的绘制。橡皮带技术的难点主要在于:绘制新几何形状时要擦除原有形状。另外,在使用橡皮带的过程中还必须特别小心,切记新橡皮带不能干扰位于其下方的已有图形,即它应采用XOR模式绘制。

1、Rubberband基本类

在正式讲述Rubberband基本类的代码之前,我们首先简单概括在屏幕上绘制一个橡皮带形状所涉及的主要步骤:

  • 配备橡皮带的构件中发生了一个鼠标按下事件。
  • 鼠标在发生鼠标按下事件的构件中拖动。
  • 在同一个构件中发生了鼠标释放事件。

步骤1定义橡皮带的锚点,该锚点在余下的各个步骤中保持不变。

步骤2动态更改橡皮带的伸展点,伸展点与鼠标的当前拖动位置保持同步。

步骤3定义橡皮带的终点。

当一个橡皮带操作完成后,橡皮带应该能够汇报橡皮带的锚点,以及发生最后一次橡皮带操作的终点等信息。只有这样,橡皮带客户才能够确定橡皮带操作的边界并随后执行恰当的操作。
Rubberband 基本类封装了以上给出的各个步骤所需要实现的功能。而 Rubberband 的扩展,如RubberbandLine类、RubberbandRectangle类以及RubberbandEllipse类等则仅仅用于实现橡皮带的实际绘制操作。

2、橡皮带面板

RubberbandPanel是 Panel类的抽象扩展,它保持与Rubberband实例之间的关联。Rubber-bandPanel类实现空构造器,因此系统为其生成一个默认构造器,该默认构造器不带任何参数。
RubberbandPanel提供setRubberband方法,该方法用于创建橡皮带面板与橡皮带之间的关联。如果一个橡皮带在此之前已经与面板之间相关联,则它首先将该关联设置为非活动状态。然后,如果传递到setRubberband ()方法的橡皮带非空,则该橡皮带将被设置为活动状态,并且将橡皮带的构件设置为橡皮带面板。

3、DrawingPanel类的使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值