How to bring an image to the foreground in Java?

纵然是瞬间 提交于 2019-12-02 15:23:28

问题


I'm trying to create a Pacman game in Java, and so far I've displayed the background image (the blue and black maze), but I'm having trouble showing the image of Pacman. When I try to display him in the same method with which I displayed the background, he doesn't appear unless I slightly manually alter the size of the Jframe. And even then when he appears there's a small white square in the bottom right corner of his image. What can I do to fix this? Is there any other way I can insert the pacman image in that works?

This is the code:

  JFrame window = new JFrame();

  ImageImplement pacman = new ImageImplement(new ImageIcon("C:\\Users\\16ayoubc\\Desktop\\Pacman-moving.gif").getImage());  
  ImageImplement panel = new ImageImplement(new ImageIcon("C:\\Users\\16ayoubc\\Desktop\\background.png").getImage());

  pacman.setLocation(255, 255);
  pacman.setVisible(true);
  pacman.setOpaque(true);
  window.add(pacman);
  window.add(panel);

  window.setVisible(true);
  window.setSize(576,655);
  window.setName("Pacman");
  window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

回答1:


Use a JLayeredPane insted of the window directly for a container and specify the depth (z-order) of the components when you add them.




回答2:


window.add(pacman);
window.add(panel);

You're adding pacman before you add the background, so it is drawing over the pacman sprite and you are not seeing it. Make sure you draw your items in the game in reverse order, so draw the background first, then pacman.




回答3:


 window.add(pacman);
 window.add(panel);

You can't add two components to the CENTER of a BorderLayout.

If you want the pacman to appear on the panel then you add the pacman to the window:

//window.add(pacman);
panel.add(packman)
window.add(panel);


来源:https://stackoverflow.com/questions/23061863/how-to-bring-an-image-to-the-foreground-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!