Java g.drawString()调用导致初始化非常慢

时间:2018-07-06 07:02:10

标签: java swing graphics drawstring

下面的代码通常提供大约1500-2000ms的输出,这太长了,以至于不能简单地在JFrame中绘制字符串。

public static void main(String[] args) {
    CustomFrame frame = new CustomFrame();
    frame.setVisible(true);
}

class CustomFrame extends JFrame {

public CustomFrame() {
    super();

    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    setPreferredSize(new Dimension(300, 300));

    pack();
}

@Override
public void paint(Graphics g) {
    super.paint(g);
    long s = System.currentTimeMillis();

    g.drawString("Hello", 50, 50);

    System.out.printf("Draw time: %dms\n", (System.currentTimeMillis() - s));
}

另外,在运行代码时,窗口将立即加载,但是要花费1500-2000ms才能显示文本。 对于涉及文本/字体的任何调用,包括带有文本标签的JButton,也会发生相同的问题。甚至这一行:

System.out.println(g.getFont().toString());

将导致速度变慢。

如果我添加第二个drawString调用,则在绘制的第一个字符串和第二个字符串之间没有暂停。

这使我相信,尽管我可能完全错了,但是在第一次迭代时加载库是一个问题

关于什么原因可能导致此问题/如何解决?被困了一段时间。

干杯。

0 个答案:

没有答案