2013-04-29 29 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