下面的代码通常提供大约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调用,则在绘制的第一个字符串和第二个字符串之间没有暂停。
这使我相信,尽管我可能完全错了,但是在第一次迭代时加载库是一个问题
关于什么原因可能导致此问题/如何解决?被困了一段时间。
干杯。