我正在用JFrame和JLabels创建一个非常简单的游戏,我设法让它工作,但在放置背景的时候,我发现了一个问题。我设置为背景的图像覆盖了我的另一个JLabels (它们仍然可以在后面工作,但你看不到它们)。
public class Game extends JPanel {
Player p1 = new Player(this, 'a');
Player p2 = new Player(this, 'r');
public Game() {}
public void move() {}
public void gameOver() {}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
p1.paint(g2d);
p2.paint(g2d);
}
public static void main(String[] args) throws InterruptedException, IOException {
BufferedImage img = ImageIO.read(new File(not relevant));
JFrame frame = new JFrame("Window");
JLabel background = new JLabel(new ImageIcon(img));
Game game = new Game();
frame.add(game);
frame.add(background);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
while (true) {
game.move();
game.repaint();
Thread.sleep(10);
}
}
}
我认为问题来自于使用我的类游戏(这是一个“运行”游戏的类)作为JPanel,然后主要创建一个JFrame并添加它的…如果没有办法解决这个问题,我会改变它,但我想保持它现在的样子。我已经尝试交换了:
Frame.add(游戏);frame.add(背景);
但结果是:
游戏-->背景-->您只能看到背景,但仍然可以玩游戏
背景-->游戏-->你只能看到一个小窗口(没有大小,只有最小化,最大化和关闭),但仍然可以玩游戏。
我也尝试在Game类中创建背景图像,但它不起作用。
https://stackoverflow.com/questions/56653002
复制相似问题