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