Java: desarrollo gráfico con JFrame y JComponent
Buenos días,
Tengo que desarrollar un juego en java, concretamente una versión simplificada del R-Type. Había pensado en crearme una ventana JFrame, e ir añadiendo cada componente, los cuales serían JComponents.
De esta forma, tendría un JComponent para el fondo, otro para la nave del jugador y uno por cada marciano.
En cambio, esto no me termina de funcionar, pues dependiendo de donde especifique el setStize del JFrame se visualiza o solo el fondo, o el fondo en un tamaño ínfimo y la nave del personaje.
Mis clases son las siguientes:
public class Ventana extends JFrame { public Ventana (){ this.setSize(1000, 600); --> Si solo pongo esta línea solo veo la nave en una ventana gris minimizada. DrawBackground(); this.setSize(1000, 600); --> Si solo pongo esta línea solo veo el fondo en el tamaño especificado drawSpacecraft(); this.setSize(1000, 600); --> Si solo pongo esta línea solo veo la nave en una ventana gris del tamaño especificado pack(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void drawSpacecraft() { add(New Background()); } public void drawBackground() { add(New Spacecraft()); } public class Background extends JComponent { protected void paintComponent(Graphics g) { super.paint(g); Toolkit t = Toolkit.getDefaultToolkit (); Image imagen = t.getImage ("imagen2.jpg"); g.drawImage (imagen, 0, 0, this); } } public class Spacecraft extends JComponent { protected void paintComponent(Graphics g) { super.paint(g); Toolkit t = Toolkit.getDefaultToolkit (); Image imagen = t.getImage ("imagen1.jpg"); g.drawImage (imagen, 10, 10, this); } } }
Por que no me sale correctamente el fondo aplicado a toda la ventana y la nave encima?? Como puedo superponer componentes en un JFrame??
Es correcta la orientación que le he dado, la de JComponents?? O debería haber hecho las cosas de otra forma??? Independientemente, hay algún problema con que lo haga así??
Muchas gracias,
Un saludo