Proyecto Stand O\' Food -
Hola a todos!
bueno les cuento que es lo que estoy haciendo.
Para la facultad me han pedido que haga un juego en Java (lenguaje que estoy aprendiendo) y decidi hacer el Stand O' Food
http://www.gamehouse.com/gamedetails/?game=standofood&navpage=downloadgames
La verdad como veran es para mi algo ambicioso pero quiero intentarlo.
La idea del proyecto es hacer el juego y que quede relatado paso a paso la construccion del mismo y asi armar un tutorial...
Para empezar el primer paso que quiero dar es el de lograr el fondo de este juego y aca es donde empiezan las dudas ya que tengo una imagen para el fondo pero no se como ponerla
Lo que tengo es lo siguente....
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class StandOFood{
public static final int WIDTH = 1026;
public static final int HEIGHT = 757;
public StandOFood() {
JFrame ventana = new JFrame("Stand O' Foof");
ventana.setBounds(0,0,WIDTH,HEIGHT);
ventana.setVisible(true);
ventana.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
StandOFood inv = new StandOFood();
}
}
Entonces como pondriamos la imagen que adjunto como fondo de nuestra pantalla?
Desde ya muchas Gracias!!
bueno les cuento que es lo que estoy haciendo.
Para la facultad me han pedido que haga un juego en Java (lenguaje que estoy aprendiendo) y decidi hacer el Stand O' Food
http://www.gamehouse.com/gamedetails/?game=standofood&navpage=downloadgames
La verdad como veran es para mi algo ambicioso pero quiero intentarlo.
La idea del proyecto es hacer el juego y que quede relatado paso a paso la construccion del mismo y asi armar un tutorial...
Para empezar el primer paso que quiero dar es el de lograr el fondo de este juego y aca es donde empiezan las dudas ya que tengo una imagen para el fondo pero no se como ponerla
Lo que tengo es lo siguente....
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class StandOFood{
public static final int WIDTH = 1026;
public static final int HEIGHT = 757;
public StandOFood() {
JFrame ventana = new JFrame("Stand O' Foof");
ventana.setBounds(0,0,WIDTH,HEIGHT);
ventana.setVisible(true);
ventana.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
StandOFood inv = new StandOFood();
}
}
Entonces como pondriamos la imagen que adjunto como fondo de nuestra pantalla?
Desde ya muchas Gracias!!
PERDON no pude adjuntar la imagen
con lo que la pregunta seria como podria una imagen sobre el fondo de nuestra pantalla?
con lo que la pregunta seria como podria una imagen sobre el fondo de nuestra pantalla?
piachens:
Lo único que tienes que hacer es sobreescribir el método "paintComponent" del panel en el que quieras poner la imagen de fondo. Te adjunto tu ejemplo modificado:
import java.awt.event.*;
import java.awt.event.WindowEvent;
import javax.swing.*;
import java.awt.*;
public class StandOfFood extends JFrame {
public static final int WIDTH = 1026;
public static final int HEIGHT = 757;
public ImageIcon fondo;
public StandOfFood() {
fondo = new ImageIcon("tu_fondo.jpg");
JPanel panel = new JPanel() {
protected void paintComponent(Graphics g) {
g.drawImage(fondo.getImage(), 0, 0, null);
super.paintComponent(g);
}
};
panel.setOpaque( false );
panel.setPreferredSize( new Dimension(WIDTH-5, HEIGHT-5) );
getContentPane().add( panel );
this.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
StandOfFood frame = new StandOfFood();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WIDTH, HEIGHT);
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}
Eso si, para que se vea el fondo, todo los componentes que vayas a poner encima tienen que tener la Opaque a false.
Lo único que tienes que hacer es sobreescribir el método "paintComponent" del panel en el que quieras poner la imagen de fondo. Te adjunto tu ejemplo modificado:
import java.awt.event.*;
import java.awt.event.WindowEvent;
import javax.swing.*;
import java.awt.*;
public class StandOfFood extends JFrame {
public static final int WIDTH = 1026;
public static final int HEIGHT = 757;
public ImageIcon fondo;
public StandOfFood() {
fondo = new ImageIcon("tu_fondo.jpg");
JPanel panel = new JPanel() {
protected void paintComponent(Graphics g) {
g.drawImage(fondo.getImage(), 0, 0, null);
super.paintComponent(g);
}
};
panel.setOpaque( false );
panel.setPreferredSize( new Dimension(WIDTH-5, HEIGHT-5) );
getContentPane().add( panel );
this.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
StandOfFood frame = new StandOfFood();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WIDTH, HEIGHT);
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}
Eso si, para que se vea el fondo, todo los componentes que vayas a poner encima tienen que tener la Opaque a false.
