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

[SOLUCIONADO] jlist con imagenes

Estas en el tema de jlist con imagenes en el foro de Java en Foros del Web. tengo un problema, necesito mostrar imagenes en un jlist, algo como un visor de imagenes, tengo casi listo pero no me muestra las imagenes ayuda ...
  #1 (permalink)  
Antiguo 18/10/2014, 21:46
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 10 años, 1 mes
Puntos: 0
jlist con imagenes

tengo un problema, necesito mostrar imagenes en un jlist, algo como un visor de imagenes, tengo casi listo pero no me muestra las imagenes ayuda porfavor

aqui va el codigo


import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class JListSample extends JFrame implements ListSelectionListener
{
// Used in choosing selection. Each String name corresponds to a given image
String [] nombres = { "1","2","3","4","5" };

// be sure to save these images within the same directory of this java file
ImageIcon [] fotos = { new ImageIcon ("1.jpg"),
new ImageIcon ("2.jpg"),
new ImageIcon ("3.jpg"),
new ImageIcon ("4.jpg"),
new ImageIcon ("5.jpg") };

BorderLayout layoutBL;
JList lista;
JScrollPane selectionJS;
JLabel etiqueta, displayPicJL, infoJL;


public JListSample ()
{
super ("visor de fotos");
Container panel = getContentPane ();
panel.setLayout (null);

etiqueta = new JLabel ("elige una foto", SwingConstants.CENTER);
etiqueta.setSize (470,20);
etiqueta.setLocation (10,0);
panel.add (etiqueta);

lista = new JList (nombres);
lista.setVisibleRowCount (3);
lista.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
lista.addListSelectionListener (this);

selectionJS = new JScrollPane (lista);
selectionJS.setSize (470,60);
selectionJS.setLocation (10,20);
panel.add (selectionJS);

displayPicJL = new JLabel (fotos[4]);
displayPicJL.setSize (470,350);
displayPicJL.setLocation (10,50);
panel.add (displayPicJL);

infoJL = new JLabel (nombres [4], SwingConstants.CENTER);
infoJL.setSize (470,20);
infoJL.setLocation (10,380);
panel.add (infoJL);

setSize (500,440);
setVisible (true);
setDefaultCloseOperation (EXIT_ON_CLOSE);
}

public static void main (String [] args){
JListSample list = new JListSample ();
}

public void valueChanged (ListSelectionEvent e){
if (e.getSource() == lista)
{ displayPicJL.setIcon (fotos[lista.getSelectedIndex()]);
infoJL.setText (nombres[lista.getSelectedIndex()]);
}
}
}

Última edición por harryhxc; 18/10/2014 a las 22:04
  #2 (permalink)  
Antiguo 19/10/2014, 06:55
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: jlist con imagenes

Buenas,

Probablemente es porque no encuentra tus imagenes. Deberías ponerlas por ejemplo en una carpeta images en la raiz de tu classpath y cargarlas mediante el classloader:
new ImageIcon(getClass().getResource("/images/1.jpg"))


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 19/10/2014, 13:46
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: jlist con imagenes

ohhhhhhhh te pasaste muchas gracias, tenias razon le puse esa linea y funciono altiro, pero ahora tengo otro problema :c porfavor, me puedes decir como las puede redimensionar para que no se vean grandes en el panel, muchas gracias por tu ayuda :D
  #4 (permalink)  
Antiguo 20/10/2014, 01:46
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: jlist con imagenes

No lo puedes hacer jugando con los valores de esta linea?

displayPicJL.setSize (470,350);
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 20/10/2014, 16:03
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: jlist con imagenes

no se puede, porque lo que ase es cambiar el ancho y el alto del jlabel, sin embargo la foto es muy grande y no cae en el espacio
  #6 (permalink)  
Antiguo 21/10/2014, 00:26
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: jlist con imagenes

Buenas,

Entonces deberias escalar la imagen:

Código Java:
Ver original
  1. new ImageIcon(((new ImageIcon(getClass().getResource("/images/1.jpg"))).getImage()).getScaledInstance(470, 350, java.awt.Image.SCALE_SMOOTH))


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #7 (permalink)  
Antiguo 24/10/2014, 09:39
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: jlist con imagenes

sirvioo!!!!!!!!!!! muchas gracias, te pasaste ahora tengo listo el codigo :D :D

gracias .. Saludos
  #8 (permalink)  
Antiguo 25/10/2014, 15:03
 
Fecha de Ingreso: octubre-2014
Mensajes: 6
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: jlist con imagenes

Me podrias ayudar en otro codigo?, no se muy bien pero tengo que hacer algo asi como una venta de autos, pero que tenga jcombobox, jradiobutton, jlist, que se pueda elegir el modelo del auto, marca, etc, pero se puedan mostrar los datos en un jlist por favor, te agradeceria mucho, luego te explico mas detalles, es un trabajo para la universidad...
de ante mano muchas gracias :D
  #9 (permalink)  
Antiguo 27/10/2014, 02:27
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: jlist con imagenes

Buenas,

Para eso entonces crea otro post. Si alguno sabemos ayudarte lo intentaremos (yo de swing conozco poquito). Acuerdate de explicar bien el problema y el punto en el que estas atascado en tu codigo.


Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: imagenes, jlist
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 18:09.