Я не думаю, что он будет слишком тяжелым, поскольку Graphics2D
вашего JPanel
должен быть тем же, который передан в JLabel
, но с разными границами и смещениями.
Я имею в виду, что Swing не выделяет новый графический контекст, в котором вы можете отображать каждый элемент внутри иерархии объектов, но он использует то же самое с различными возможностями. Это не значит, что panel.getGraphics() == label.getGraphics()
, но и не являются совершенно разными объектами.
В любом случае, если вам нужно много анимированных работ, я бы предложил вам создать собственный класс спрайтов
class Sprite
{
Point2D position;
Rectangle2D size;
float rotation;
}
и обрабатывать все на одном уровне paintComponent
. Или, по крайней мере, я всегда так делал, поскольку Java2D не похож на CoreAnimation, которая предназначена для использования на уровне слоев для перемещения / анимации контента.