javaGUI学习9:AWT-字体

本文详细介绍了Java AWT中Font和FontMetrics类的使用,包括字体的创建、字体度量如高度、ascent、descent和领先等概念。FontMetrics提供了获取文本宽度、高度和行间距等方法,帮助开发者准确控制文本布局。同时,列举了JDK支持的逻辑字体,并展示了如何获取和设置字体度量。
摘要由CSDN通过智能技术生成
1、字体和字体度量
  • AWT中有两个类支持字体操作,这两个类是:Font和 FontMetrics o
  • 在Font类中,提供了一套基本的字体和字体类型。因为Java不受操作平台的约束,Helvs-tica、Times Roman等字体常被转换成本地平台支持的字体。
  • FontMetrics类支持和字体相关的度量,包括字体的高度、leading、ascnet、dscent、特定字符串的宽度等。
2、Font类
  • 字体是一个字符集。字体通过指定其逻辑字体名、字形和字体大小来实例化。
  • 对于低层的窗口系统,逻辑字体名被映射成一个本机字体。

JDK中支持的逻辑字体列表:

Dialog
SansSerif
Serif
Monospaced
Helvetica
TimesRoman
Courier
Dialoglnput
ZapfDingbats

构造字体时指定字形:

Font.BOLD
Font.ITALIC
Font.PLAIN

每个常数描绘Font类维护的字形integer中的一个比特。其中BOLD与ITALIC可以合并,PLAIN值为0,所以用 BOLD 或ITALIC与之合并的值是 BOLD或ITALIC 。

**字体大小:**用一个整数来确定。一点相当于1/72英寸。AWT中字体不保证所有大小都可以被绘制成系统字体。为了确定字体的精确大小,必须使用FontMetrics对象。

可以通过调用Toolkit.getFontList()获取支持的逻辑字体名列表

setFont(new Font(String 字体,int 风格,int 字号))
3、FontMetrics类

提供和字体相关的度量

3.1 AWT字体模式

AWT的字体模式和X Window系统中的字体模式很相似。在下图中,显示了在 AWT中怎样计算字体的高度、ascent 、descent 、leading 等。

  • ascent :字符向上超出基线的距离。descent :字符向下超出基线的距离。
  • leading: 上一行的descent和下一行的ascent之间的距离。
  • 字体高度:ascent、descent 、leading 的和。
  • FontMetrics 没有公共的构造器。调用下面的方法之一,可以得到FontMetrics的一个引用。
    在这里插入图片描述
    在这里插入图片描述

在上面所列出的方法中,第二个方法是用来获取和AWT构件相关的字体度量的最常用方法。该方法首先获取对构件的Graphics 的引用,然后调用Graphics.getFontMetrics ():

int bytesWidth(byte[] data, int off, int len) //返回显示此 Font指定字节数组的总提前宽度。  
int charsWidth(char[] data, int off, int len) //返回显示此 Font指定字符数组的总提前宽度。  
int charWidth(char ch) //返回此 Font指定字符的advance width。  
int charWidth(int codePoint) //返回此 Font指定字符的advance width。  
int getAscent() //确定此 FontMetrics对象描述的 Font的 字体上升 。  
int getDescent() //确定此 FontMetrics对象描述的 Font的 字体下降 。  
Font getFont() //获取 Font通过此描述 FontMetrics对象。  
FontRenderContext getFontRenderContext() //获取 FontRenderContext使用此 FontMetrics对象测量文本。  
int getHeight() //获取此字体中文本行的标准高度。  
int getLeading() //确定此 FontMetrics对象描述的 Font的 标准前导 。  
LineMetrics getLineMetrics(char[] chars, int beginIndex, int limit, Graphics context) //返回指定的Graphics上下文中指定字符数组的LineMetrics对象。  
LineMetrics getLineMetrics(String str, int beginIndex, int limit, Graphics context) //返回指定的Graphics上下文中指定的String的LineMetrics对象。  
LineMetrics getLineMetrics(String str, Graphics context) //返回指定的Graphics上下文中指定的String的LineMetrics对象。  
LineMetrics getLineMetrics(CharacterIterator ci, int beginIndex, int limit, Graphics context) //返回指定的Graphics上下文中指定的CharacterIterator的LineMetrics对象。  
int getMaxAdvance() //获取此 Font中任何字符的最大前进宽度。  
int getMaxAscent() //确定此 FontMetrics对象描述的 Font的最大上升。  
Rectangle2D getMaxCharBounds(Graphics context) //返回指定的 Graphics上下文中具有最大边界的字符的边界。  
int getMaxDecent() //已过时。 截至JDK 1.1.1版,由getMaxDescent()取代。  
int getMaxDescent() //确定此 FontMetrics对象描述的 Font的最大下降。  
Rectangle2D getStringBounds(char[] chars, int beginIndex, int limit, Graphics context) //返回指定的 Graphics上下文中指定的字符数组的边界。  
Rectangle2D getStringBounds(String str, int beginIndex, int limit, Graphics context) //返回指定的 Graphics上下文中指定的 String的边界。  
Rectangle2D getStringBounds(String str, Graphics context) //返回指定的 Graphics上下文中指定的 String的边界。  
Rectangle2D getStringBounds(CharacterIterator ci, int beginIndex, int limit, Graphics context) //返回指定的 Graphics上下文中指定的 CharacterIterator中索引的字符的边界。  
int[] getWidths() //获取 Font前256个字符的 Font 。  
boolean hasUniformLineMetrics() //检查 Font是否具有统一的线路指标。  
int stringWidth(String str) //返回在此 Font显示指定的 String的总提前宽度。  
String toString() //返回此 FontMetrics对象的值的表示形式为 String 。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值