Следующий код обычно выдает около 1500-2000 мс, что слишком долго, чтобы просто нарисовать строку в 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-2000 мс.
Та же проблема возникает при любых вызовах, связанных с текстом / шрифтом, включая JButtons с текстовыми метками. Даже эта строка:
System.out.println(g.getFont().toString());
приведет к замедлению.
Если я добавлю второй вызов drawString, между первой отображаемой строкой и второй нет паузы.
Это наводит меня на мысль, что это проблема с загрузкой библиотек на первой итерации, хотя я могу быть совершенно не прав
Любые идеи относительно того, что может быть причиной этого / как это исправить? Некоторое время был в тупике.
Приветствие.