2013-04-29 4 views
1

Я пытаюсь написать ретро-игру змеи. Я установил фоновое изображение старой Nokia, и я хочу сыграть змею со своего экрана. Однако я не могу поместить свою игровую панель в фоновое изображение. Могу ли я это сделать? Я использовал этот код для своего фонового изображения.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) *** ссылка. –

+0

@ExtremeCoders: Я не вижу проблем с помещением изображения в ImageIcon, в JLabel и созданием JLabel в contentpane, и на самом деле я делал это без проблем много раз. Какие проблемы вы ожидаете с помощью этой настройки? –

+0

@HovercraftFullOfEels Проблема заключается в том, что если мы хотим, чтобы изображение масштабировалось в соответствии с размером 'JPanel', тогда было бы невозможно с приведенной выше настройкой –

ответ

3
  • Не добавляйте JPanel в ContentPane, что вы только собираетесь отказаться от следующей строки или два (как вы сейчас делаете).
  • Дайте новый ContentPane-JLabel в BorderLayout через setLayout(new BorderLayout())
  • добавить GamePanel к выше JLabel, Borderlayout.CENTER.
  • Убедитесь, что ваша игровая панель JPanel непрозрачна, набрав на ней setOpaque(false), чтобы фон JLabel отображал изображение.
+0

Большое спасибо, он работает! – jdyg

+0

@ user2094920: отлично, рад, что у вас это работает! –