所遇到的问题是,我通过显示简单菜单来启动我的应用程序。为了正确地调整文本的大小和对齐方式,我需要获取字体度量信息,但我找不到快速完成此操作的方法。我测试了我的程序,无论使用哪种方法获取字体度量信息,第一次调用都需要超过500毫秒!因此,启动我的应用程序所需的时间比必要的时间长得多。
我不知道这是否与平台有关,但以防万一,我正在使用Mac OS 10.6.2在MacBook Pro上(硬件不是问题)。
如果您知道更快获取字体度量信息的方法,请帮助解决。
我尝试了这3种获取字体度量信息的方法,无论选择哪种方法,第一次调用总是非常缓慢。
我不知道这是否与平台有关,但以防万一,我正在使用Mac OS 10.6.2在MacBook Pro上(硬件不是问题)。
如果您知道更快获取字体度量信息的方法,请帮助解决。
我尝试了这3种获取字体度量信息的方法,无论选择哪种方法,第一次调用总是非常缓慢。
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
import javax.swing.JFrame;
public class FontMetricsTest extends JFrame {
public FontMetricsTest() {
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Font font = new Font("Dialog", Font.BOLD, 10);
long start = System.currentTimeMillis();
FontMetrics fontMetrics = g2.getFontMetrics(font);
// LineMetrics fontMetrics1 =
// font.getLineMetrics("X", new FontRenderContext(null, false, false));
// FontMetrics fontMetrics2 = g.getFontMetrics();
long end = System.currentTimeMillis();
System.out.println(end - start);
g2.setFont(font);
}
public static void main(String[] args) {
new FontMetricsTest();
}
}
Font
的缓存。你可以在API文档中看到它们有一个finalize
但没有dispose
... - Tom Hawtin - tackline