Foros del Web » Programación para mayores de 30 ;) » Java »

imagen en GridLayout

Estas en el tema de imagen en GridLayout en el foro de Java en Foros del Web. hola: Yo se que para cambiar el color de fonde de un GridLayout se hace asi: p2=new JPanel(new GridLayout(5,1,5,5)); //aqui lo creo p2.setBackground(Color.red); //le doy ...
  #1 (permalink)  
Antiguo 25/07/2008, 11:54
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 3 meses
Puntos: 0
imagen en GridLayout

hola:

Yo se que para cambiar el color de fonde de un GridLayout se hace asi:

p2=new JPanel(new GridLayout(5,1,5,5)); //aqui lo creo
p2.setBackground(Color.red); //le doy color

pero lo que yo quiero es en ves de un color una imagen de fondo.


como lo puedo hacer??
  #2 (permalink)  
Antiguo 25/07/2008, 12:01
 
Fecha de Ingreso: mayo-2007
Mensajes: 210
Antigüedad: 17 años
Puntos: 8
Respuesta: imagen en GridLayout

Si quieres poner una imagen de fondo podrias hacer esto: crear una clase que extienda de jpanel, luego sobreescribes el metodo paintComponent(Graphics g)

Código PHP:
paintComponent(Graphics g){
     
super.paintComponent();
     
g.drawImage(Imagenxy);

salu2

Última edición por vdpazmino; 25/07/2008 a las 12:11
  #3 (permalink)  
Antiguo 25/07/2008, 13:32
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: imagen en GridLayout

No entiendo muy bien:

como quedaria dicha clase?
  #4 (permalink)  
Antiguo 25/07/2008, 18:49
 
Fecha de Ingreso: mayo-2007
Mensajes: 210
Antigüedad: 17 años
Puntos: 8
Respuesta: imagen en GridLayout

Te pongo un ejemplo mas completo

Código PHP:
public class MainDesktopPane extends JPane{

    private 
Image image;
    
    public 
MainDesktopPane() {
        
super();
        
image = new ImageIcon(getClass().getResource("/images/fondo.jpg")).getImage();
    }

    @
Override
    
protected void paintComponent(Graphics g) {
        
super.paintComponent(g);
        
int h = (int)image.getHeight(null)/2;
        
int w = (int)(image.getWidth(null)/2);
        
int x = (int)getWidth()/w;
        
int y = (int)getHeight()/h;
        
g.drawImage(imagexynull);
    }

La clase lo que hace es colocar la imagen fondo.jpg como fondo en el jpanel, lo coloca en el centro del jpanel

espero que te ayude

salu2
  #5 (permalink)  
Antiguo 25/07/2008, 20:54
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: imagen en GridLayout

Hola otra forma es setearle un borde que tenga la imagen en mi ejemplo tengo un paquete en mi proyecto llamado Icons donde pongo todas las imagenes, asi cuando genero el jar van embebidas dentro te dejo el codigo y cualquier cosa me preguntas

saludos

Código:
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Insets;
import javax.swing.ImageIcon;
import javax.swing.border.Border;

/**
 *
 * @author agustin
 */
public class BorderGrid implements Border{

      private Image image = new ImageIcon(getClass().getResource("/Icons/scmfondo.png")).getImage();

       public BorderGrid () {
       }
    
       public Insets getBorderInsets(Component c) {
           return new Insets(0,0,0,0);
       }
    
       public boolean isBorderOpaque() {
           return true;
       }

       public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
           int x0 = x + (width-image.getWidth(null))/2;
           int y0 = y + (height-image.getHeight(null))/2;
           g.drawImage(image, x0, y0, null);
    } 

}
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:11.