Я новичок в программировании AWT/Swing. Я пытаюсь сделать изображение 100 000 раз. Цикл метода drawImage()
находится в методе paint()
. Я нахожу времена, когда java вызывает метод paint()
, довольно неустойчивый. Он может вызывать метод paint()
два раза за одно время работы программы, но другие могут звонить три раза. Если я создаю кнопку, которая делает repaint()
, она будет звонить только paint()
один раз, когда я нажимаю эту кнопку.Как работает JVM в Swing?
Может ли кто-нибудь сказать мне, когда будет вызван метод paint()
? Я знаю, что сгенерированная системой картина и анимация, созданная приложением. Но я думаю, что это не относится ни к одному из этих случаев.
'Я знаю, что сгенерированная системой картина и приложение, созданное с помощью приложения. Но я думаю, что это не относится ни к одному из этих случаев. - Какой другой случай был бы? – camickr
На этом уровне Swing является самодостаточным, и JVM ничего не говорит. Тем не менее, вам нужно называть 'repaint' каждый раз, когда вы думаете, что ваша панель должна быть нарисована. – zneak
Swing использует процесс пассивной краски, то есть краска времени называется случайной и основана на решениях, которые делает RepaintManager. Если вы хотите контролировать, когда вызывается краска, вам нужно будет использовать активный подход к рисованию. Сказав, что если изображения каким-то образом меняются, я бы предоставил буфер резервного копирования/I age во-первых и просто нарисую его в графическом контексте, когда вызывается краска. Возможно, вам понравится прочитать [Живопись в AWT и Swing] (http://www.oracle.com/technetwork/java/painting-140037.html) для более детального изучения процесса рисования. – MadProgrammer