SoloCodigo

Programación General => Java => Mensaje iniciado por: reymersa en Sábado 6 de Marzo de 2010, 17:32

Título: Imagen en Jframe Help
Publicado por: reymersa en Sábado 6 de Marzo de 2010, 17:32
hola bueno estoy usando netbeans y programando interfaz grafica en java y pues quiero ponerle una imagen de fondo a un frame segun me enseñaron es con un Jframe bueno aqui medio tengo el codigo

Código: Java
  1.  String ruta = "ima.jpg";
  2.  
  3.         frame = new JFrame();
  4.         frame.setBounds(0, 0, 500, 300);
  5.  
  6.  
  7.         imagen = Toolkit.getDefaultToolkit().getImage(ruta);
  8.         MediaTracker traker = new MediaTracker(frame);
  9.  
  10.         traker.addImage(imagen, 1);
  11.  
  12.         try {
  13.  
  14.             if (!traker.waitForID(1, 1000)) {
  15.                 System.out.println("Error En la Carga de la Imagen");
  16.                 System.exit(1);
  17.             }
  18.         } catch (InterruptedException e) {
  19.         }
  20.  
  21.         can = new Tracker() {
  22.  
  23.             public void paint(Graphics g) {
  24.                 System.out.println("Entro");
  25.                 g.drawImage(imagen, 0, 0, frame);
  26.             }
  27.         };
  28.  
  29.  

y aqui tengo un frame normal con unos butttons
Código: Java
  1. Frame frame = new Frame();
  2.         Window w = new Window(frame);
  3.               w.setBounds(385, 350, 500, 300);
  4.         w.setBackground(Color.darkGray);
  5.         w.setVisible(true);
  6.          
  7.  
  8.         frame.setBounds(200, 150, 800, 600);
  9.         frame.setLayout(null);
  10.  
  11.         Button a = new Button("Jugar");
  12.         a.setBounds(40, 350, 100, 30);
  13.         a.setBackground(Color.red);
  14.         a.setEnabled(true);
  15.  
  16.         Button d = new Button("Instrucciones");
  17.         d.setBounds(40, 400, 100, 30);
  18.         d.setBackground(Color.BLUE);
  19.         d.setEnabled(true);
  20.  
  21.         Button cre = new Button("Creditos");
  22.         cre.setBounds(40, 450, 100, 30);
  23.         cre.setBackground(Color.DARK_GRAY);
  24.         cre.setEnabled(true);
  25.  
  26.         frame.add(cre);
  27.         frame.add(d);
  28.         frame.add(a);
  29.         frame.setVisible(true);
  30.  

si podrian ayudarme a ponerle la imgen o como hacerlo o que usar les agradeceria muchisisisisismo
Título: Re: Imagen en Jframe Help
Publicado por: frealgagu en Jueves 18 de Marzo de 2010, 03:55
Nunca he visto que se pueda colocar directamente una imagen en el JFRame, pero yo lo he hecho pintando un JPanel que esté contenido en el JFrame y se hace de la siguiente forma:
Código: Java
  1.  
  2.     @Override
  3.     public void paint(Graphics g)
  4.     {
  5.         g.setColor(getBackground());
  6.         g.fillRect(0,0,getWidth(),getHeight());
  7.         Image imagen = new ImageIcon(getClass().getResource("/image/ImagenFondo.jpg")).getImage();
  8.         if(imagen != null)
  9.         {
  10.             g.drawImage(imagen,0,0,null);
  11.         }
  12.         Component c;
  13.         for(int i = 0;i < getComponentCount();i++)
  14.         {
  15.             c = getComponent(i);
  16.             g.translate(c.getX(),c.getY());
  17.             c.print(g);
  18.             g.translate(-c.getX(),-c.getY());
  19.         }
  20.     }
  21.  
  22.  
De esta forma debería funcionarte correctamente.
Título: Re: Imagen en Jframe Help
Publicado por: frealgagu en Jueves 18 de Marzo de 2010, 03:59
Otra cosa que podrías hacer es la siguiente
Tienes el JFrame normalito, le agregas un JLayeredPane de la paleta, luego le agregas un panel o lo que quieras, le quitas la selección a Opaque, y luego le añades un JLabel, y le colocas la imagen al JLabel. Lo que hace JLayeredPane es dar la posibilidad de contener todos los componentes que se deseen, uno debajo de otro y en cualquier orden (A diferencia de cualquier otro Container que solo permite un componente al lado de otro)

Espero que te halla servido

Saludos,


Fredy Alberto García Güiza
Universidad Distrital Fco José de Caldas
Bogotá, Colombia