将多个图形添加到单个 JPanel



我正在尝试添加 3 个图形,其中两个必须移动(大概是相互穿过,在单个轴上移动),只有添加到面板显示的后一个。

换句话说,我在 JFrame 中添加了许多面板,并且在最大的面板中,我使用特定坐标放置了图形对象。显示代码可能会更有帮助。

//the gameArea is the referred-to JPanel, above this code    
TankOne tank1 = new TankOne(Color.GREEN);
TankTwo tank2 = new TankTwo(Color.MAGENTA);
FieldBar fieldb = new FieldBar(Color.getHSBColor((float) Math.random(),(float) Math.random(),(float) Math.random()));
JPanel tank1panel = new JPanel();
JPanel tank2panel = new JPanel();
tank1panel.add(tank1);
tank2panel.add(tank2);
gameArea.add(tank1panel);
gameArea.add(tank2panel);
gameArea.add(fieldb);
//repaint code here

如您所见,这是一款坦克游戏。出现在GUI上的是最后一个gameArea.add。[这里是fieldb,一个显示游戏地板的栏]。

这里所做的尝试是我尝试将两个新面板放入游戏区域Jpanel,然后将两个坦克对象放入其中。还是没有骰子。

有没有解决方法可以让我按像素移动坦克?我已经看到一些答案包括切换到网格布局,但我认为这无济于事,因为额外的面板什么也没做。

谢谢你的回答。

我猜每个坦克JPanel都会显示单个坦克的图像(?不是100%确定)。一些建议,但请告诉我我的假设是否偏离基础:

  • 保持逻辑和视图很好地分开,就像 M-V-C 一样。
  • 在其
  • paintComponent(...)方法中,在单个 JPanel(可能称为 DrawingPanel)中执行所有图形。
  • 背景图像将是使用绘图面板的paintComponent(...)方法绘制的缓冲图像。
  • 坦克本身不会由 JPanel 表示,而是它自己的小 BufferedImage 精灵,再次在 paintComponent 方法中绘制,但在背景图像之后绘制。
  • 每个
  • 坦克至少需要 4 个精灵,每个方向一个。
  • 如果你的坦克将沿对角线移动,你可能需要更多精灵。
  • 以及炮塔的单独精灵/图像。
  • 您将移动精灵的绘制位置以响应其模型表示位置的变化。
  • 炮塔旋转也是如此。

相关内容

  • 没有找到相关文章

最新更新