Итак, проблема в том, что я запускаю свое приложение, отображая простое меню. Для правильного размера и выравнивания текста мне нужно получить метрики шрифта, и я не могу найти способ сделать это быстро. Я протестировал свою программу, и похоже, что какой бы метод я ни использовал для получения метрик шрифта, первый вызов занимает более 500 миллисекунд!? Из-за этого время, необходимое для запуска моего приложения, намного больше, чем необходимо.
Я не знаю, зависит ли это от платформы или нет, но на всякий случай я использую 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
...) - person Tom Hawtin - tackline   schedule 16.03.2010