项目管理 | IT/商务管理 | 职涯
首页 - 管理和职涯
管理&职涯
全文搜索:   

Java 2D Text 教程 - 第三课:同式样文本交互作用
作者: 翻译:朱茵
2001-01-08 16:21:02



点击测试

点击测试把屏幕中的图形的位置对应到到源文本中的字符位置。图形位置通常由用户鼠标的输入或者键盘输入决定,用脱字符号(caret)表示。TextLayout对象提供了缺省的脱字符号形状,也包括斜体字的脱字符号。如果你打算使用自己的脱字符号形状,你可以从TextLayout对象中找出缺省的脱字符号的角度和位置,并且使用该信息设计出自己想要的脱字符号形状。

如下的应用程序是这样工作的:一旦用户点击TextLayout对象,应用程序就在点击处画出缺省的脱字符号。MouseClicked方法调用TextLayout.hitTestChar方法,后者返回java.awt.font.TextHitInfo对象,该对象包含鼠标在TextLayout对象上的的点击位置信息(insertion index)。

TextLayout对象中的 getAscent,getDescent和getAdvance方法返回的信息是用来计算TextLayout对象的初始位置的,以便该对象能够在水平和垂直方向定位。

如下为完整的HitTestSample.java 源代码。


 


public void paint(Graphics g) {
 Graphics2D graphics2D = (Graphics2D) g;
 Point2D origin = computeLayoutOrigin();
 graphics2D.translate(origin.getX(), origin.getY());
 textLayout.draw(graphics2D, 0, 0);
 Shape[] carets = textLayout.getCaretShapes(insertionIndex);
 graphics2D.setColor(STRONG_CARET_COLOR);
 graphics2D.draw(carets[0]);

 if (carets[1] != null) {
   graphics2D.setColor(WEAK_CARET_COLOR);
   graphics2D.draw(carets[1]);
 }
}
private class HitTestMouseListener 
   extends MouseAdapter {
 public void mouseClicked(MouseEvent e) {
   Point2D origin = computeLayoutOrigin();
   float clickX = (float) (e.getX() - origin.getX());
   float clickY = (float) (e.getY() - origin.getY());
   TextHitInfo currentHit = textLayout.hitTestChar(clickX, 
     insertionIndex = currentHit.getInsertionIndex();
   repaint();
 }
}

【下一页】
声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
近期相关报道:
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
Copyright (c) CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159