如何在一个标签上绘制多个 类? (Java)

How can I draw on one Label with multiple classes? (Java)

我目前正在编写一款包含大量图形元素的游戏。目前代码如下所示:

protected void paintComponent(Graphics g)
{
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;

        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        
        g.drawImage(ImageLoader.gui_iconbar, xToRel(480), yToRel(810), xToRel(960), yToRel(270), null);
        g.drawImage(ClientVariables.getSplashart(Main.selectedCharacter, 0), xToRel(495), yToRel(825), xToRel(135), yToRel(240), null);

        //... (don't get confused with xToRel, it just makes changes to the drawing position if you move the camera)
}

问题是:这些 g.draw(whatever); 行有很多。我想将它们分成多个 类 但只制作 4 类 并复制粘贴 gameFrame.add(GraphicclassXY);从逻辑上讲,这是行不通的。有谁知道如何解决这个问题? (例如,如果解决方案包括将 jlabel 更改为 canvas,这不是问题)

创建逻辑非组件 classes(不扩展 JLabel、JPanel、JFrame、JComponent 或其他 Swing 组件),给它们一个 public void draw(Graphics g) 方法,给 class 那 你的逻辑 classes 的绘图实例,也许在某种集合中,并遍历集合并在你的实例上调用 draw paintComponent 方法。