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

Ayuda con imágenes en Java

Estas en el tema de Ayuda con imágenes en Java en el foro de Java en Foros del Web. Hola, escribo para ver si podéis echarme una mano con esto, porque a mí me tiene descolocado xD Lo que busco es una chorrada: "dibujar" ...
  #1 (permalink)  
Antiguo 28/03/2006, 15:32
 
Fecha de Ingreso: marzo-2006
Mensajes: 19
Antigüedad: 18 años, 1 mes
Puntos: 0
Ayuda con imágenes en Java

Hola,
escribo para ver si podéis echarme una mano con esto, porque a mí me tiene descolocado xD Lo que busco es una chorrada: "dibujar" una imagen en un JWindow. Para ello, me he definido una clase Lienzo en la que se supone "dibujaré" la imagen que le pase como argumento a la hora de crear dicho objeto:



public class Lienzo extends JPanel {
private BorderLayout borderLayout1 = new BorderLayout();
private String nombre_imagen;
private int ancho;
private int alto;

public Lienzo(String s, int nuevoAncho, int nuevoAlto) {
nombre_imagen = s;
ancho = nuevoAncho;
alto = nuevoAlto;

try {
jbInit ();
}
catch (Exception e) {
e.printStackTrace();
}
}

void jbInit () throws Exception {
this.setLayout(borderLayout1);
this.setSize(ancho, alto);
}

public void paint (Graphics g) {
super.paint (g);
Graphics2D g2D = (Graphics2D)g;
Image img = Toolkit.getDefaultToolkit().getImage(nombre_imagen );
g2D.drawImage(img, 0, 0, this);
g2D.drawLine(2, 2, 125, 211);
}
}


Y también una clase que hereda de JWindow, que tendrá un objeto de la clase Lienzo, al que le pasaré la ruta de la imagen a la hora de crearlo, algo así:


public class PantallaInicio extends JWindow {
private BorderLayout borderLayout1 = new BorderLayout();
private JPanel jPanel1 = new Lienzo ("Imagenes/logo.png", 384, 220);

public PantallaInicio () {
try {
jbInit ();
}
catch (Exception e) {
e.printStackTrace();
}
}

private void jbInit() throws Exception {
this.setSize (new Dimension (384, 220));
this.getContentPane ().setLayout(borderLayout1);
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
}
}


Luego me creo un objeto PantallaInicio, le hago un setVisible (true) y hala! JWindow en blanco. Lo cachondo es que si véis el método paint de la clase lienzo, debería dibujarme una línea, pero ni siquiera. Debe ser algo tontísimo, pero tras miles de pruebas, soy incapaz de hacerlo. Lo cachondo es que esto que pretendo conseguir ya lo había hecho con anterioridad en otras dos prácticas, pero en esta no hay cohones a que salga, ni aún reciclando código. Ántes de que preguntéis, sí, me he asegurado de que la imagen en cuestión existe, está en el directorio donde debe de estar, el archivo *.png está incluído en el proyecto (uso JBuilder 2005; una peste, sí, lo sé... ^^U). También probé a utilizar un JLabel y a "plantar" ahí la imagen, sin resultados positivos.



Mi sistema nervioso agradecería cualquier ayuda / orientación, así que gracias adelantadas x'D
  #2 (permalink)  
Antiguo 29/03/2006, 02:31
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 18 años, 10 meses
Puntos: 2
prueba con el JLabel con la direccion absoluta:
C:\blabla\blabla\Imagenes\logo.png

(cambia el volumen y los blabla's por supuesto)
  #3 (permalink)  
Antiguo 29/03/2006, 13:24
 
Fecha de Ingreso: marzo-2006
Mensajes: 19
Antigüedad: 18 años, 1 mes
Puntos: 0
Puf, con JLabels ya he probado. Y con lo de la dirección absoluta, lo tengo que hacer con un objeto url, ya que el carácter "\" es reservado y no se puede poner tal cuál en un string, a no ser que se use el carácter de escape "\\", pero claro, ya me queda la duda de si no lo pilla por no interpretar bien dicho carácter de escape. En serio, lo he probado ya todo y estoy con la cuchilla de afeitar entre los dientes. Esta noche volveré a darle un repaso al código que planté aquí anoche, a ver si encuentro algo. Si no, probaré con lo de la dirección absoluta otra vez, pero que vaya, que no me auguro mucho éxito... xD

Alguna otra opinión / sugerencia?
  #4 (permalink)  
Antiguo 29/03/2006, 13:30
 
Fecha de Ingreso: junio-2005
Mensajes: 286
Antigüedad: 18 años, 10 meses
Puntos: 2
en windows creo que tambien cuando usas '/' en lugar de '\' funciona
  #5 (permalink)  
Antiguo 29/03/2006, 14:35
 
Fecha de Ingreso: marzo-2006
Mensajes: 19
Antigüedad: 18 años, 1 mes
Puntos: 0
Jeje ya lo sabía, así es como le paso al JBuilder las rutas relativas (a partir de la carpeta de las clases) de los iconos de los botones y tal (al fin y al cabo, imágenes *.png que sí aparecen ¬¬). Y con la misma sintaxis he intentado indicarle al JBuilder la ruta de la imagen que quiero hacer aparecer, pero sin éxito alguno :_(
  #6 (permalink)  
Antiguo 30/03/2006, 02:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Prueba a extender paintComponent en vez de paint. Al menos es lo que yo he visto hacer .
  #7 (permalink)  
Antiguo 30/03/2006, 02:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 meses
Puntos: 51
Mira, buscando buscando hasta he encontrado por que:

http://java.sun.com/products/jfc/tsc...#swing_summary

Cita:
...
Swing Painting Guidelines
...
# Swing's implementation of paint() factors the call into 3 separate callbacks:

1. paintComponent()
2. paintBorder()
3. paintChildren()

Extensions of Swing components which wish to implement their own paint code should place this code within the scope of the paintComponent() method (not within paint()).
Ahora ya veo de donde viene. Paint() debiar ser del AWT y en Swing es paintComponent().

Hay que ver lo que se aprende .
  #8 (permalink)  
Antiguo 30/03/2006, 06:13
 
Fecha de Ingreso: marzo-2006
Mensajes: 19
Antigüedad: 18 años, 1 mes
Puntos: 0
Puesss probaré a usar PaintComponent, aunque ya te digo que siempre he usado el método paint sin ningún problema... Es que tiene webos que ya haya hecho esto mismo tres veces, y ahora, ni reciclando el mismo código, me salga... ^^U
En fin, probaré con el PaintComponent y ya os diré ;)
Asias! ;)
  #9 (permalink)  
Antiguo 30/03/2006, 06:16
 
Fecha de Ingreso: marzo-2006
Mensajes: 19
Antigüedad: 18 años, 1 mes
Puntos: 0
(sigh...) acabo de probarlo y nada, hijo, no funciona ni con PaintComponent... :_( Dónde OÑO estará el error?
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 22:41.