2013-04-29 72 views
1

我想写一个复古的蛇游戏。我设置了一个旧诺基亚的背景图像,我想从屏幕上播放蛇。但是,我无法将我的游戏面板放在我的背景图像上。 我可以这样做吗? 我将这段代码用于我的背景图片。Java,把面板放在框架的背景图片上

谢谢。

JFrame frame = new JFrame("Retro Snake"); 
    frame.getContentPane().add(new GamePanel()); 
    try { 
     frame.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("Images\\background.jpg"))))); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    frame.setLocation(500, 100); 
    frame.pack(); 
    frame.setVisible(true); 
+0

与其将一个'JPanel'放在图像上,最好是用自定义绘画创建一个'JPanel'。请参阅*** [this](http://stackoverflow.com/questions/4051408/jpanel-with-image-background)***链接。 – 2013-04-29 19:04:41

+0

@ExtremeCoders:我看到把图像放入ImageIcon,JLabel并将JLabel设置为contentPane没有问题,事实上我已经很多次没有问题了。你会发现什么问题,这个设置? – 2013-04-29 19:21:53

+0

@HovercraftFullOfEels问题是,如果我们希望图像按照'JPanel'的尺寸缩放,那么以上设置将不可能。 – 2013-04-29 19:25:01

回答

3
  • JPanel中不要添加到contentPane中,你只打算丢弃在下一行或两行(因为您目前正在做)。
  • 给你的新的contentPane-的JLabel通过setLayout(new BorderLayout())
  • 一的BorderLayout的的GamePanel添加到上面的JLabel,Borderlayout.CENTER。
  • 请确保您通过调用setOpaque(false)来让您的游戏平台JPanel不透明,以便后台JLabel显示其图片。
+0

非常感谢,它的作品! – jdyg 2013-04-29 19:04:32

+0

@ user2094920:很好,很高兴你的工作正常! – 2013-04-29 19:21:01