- Obtener vínculo
- X
- Correo electrónico
- Otras apps
Bienvenidos a mi nuevo post!
Les comparto un pequeño proyecto, haciendo uso de colecciones de tipo Vector. El funcionamiento básico del programa es mostrar las imágenes en un JLabel. La dirección de esas imágenes el usuario las seleccionara de cualquier lugar que el quiera, la dirección se guardará en otra colección de tipo Vector pero Tipo String. La imagen seleccionada se ajustará al tamaño del JLabel para que no se salga del Panel.
Bueno al grano!
El programa se ve de la siguiente manera:
Bueno al grano!
El programa se ve de la siguiente manera:
Primeramente creamos las colecciones en las que almacenaremos los JLabel y las Direcciones de los iconos de los mismos y variables auxiliares:
String ruta = ""; /*Colecciones*/ VectorEn la parte del constructor tenemos:images = new Vector(); Vector direcciones = new Vector(); JLabel Imagenes = new JLabel();//en éste label se mostrarán las imágenes JLabel auxiliar = new JLabel();//éste será auxiliar para poder mostrar las imágenes int posicion = 0;//Puntero para poder cambiar la imagen atrás o adelante
String path2 = "/imagenes/panel2.png";//ruta del fondo del panel URL url2 = this.getClass().getResource(path2); ImageIcon iconfondo = new ImageIcon(url2);//lo agregamos en forma de JLabel Imagenes.setBounds(250, 105, 440, 255); Imagenes.setVisible(false); auxiliar.setBounds(250, 105, 440, 255); auxiliar.setVisible(false); JLabel fondo = new JLabel(); fondo.setIcon(iconfondo); this.add(auxiliar); this.add(Imagenes); fondo.setBounds(1, 1, 1000, 450); this.setSize(1000, 550); AWTUtilities.setWindowOpaque(this, false); this.setLocationRelativeTo(null); //this.add(label); this.add(fondo); Obtener_Nombre(); //Ocultamos todos los botones, menos el de agregar Anterior.setVisible(false); Siguiente.setVisible(false); Eliminar.setVisible(false); Vaciar.setVisible(false); Duplicado.setVisible(false); eli_duplicados.setVisible(false);Los métodos para trabajar con la ubicación actual de la imagen que se esta mostrando en el panel
public void Rposi(int posicion) { this.posicion = posicion; } public int actualposi() { return posicion; }El evento para el botón Vaciar en este caso lo agregue directamente en el método del botón
private void VaciarMouseClicked(java.awt.event.MouseEvent evt) { /*si no esta vacia*/ if (!images.isEmpty()) { posicion = 0; /*asignamos pocision al metodo*/ Rposi(posicion); /*quita todos los elemtos de la coleccion*/ images.removeAllElements(); direcciones.removeAllElements(); Usuario1.setText(images.size() + ""); EstadoImg.setText(actualposi() + ""); Anterior.setVisible(false); Siguiente.setVisible(false); Eliminar.setVisible(false); Vaciar.setVisible(false); eli_duplicados.setVisible(false); Duplicado.setVisible(false); Imagenes.setVisible(false); repaint(); } }Y el método más importante es el método de agregar imágen
public void agregar_imagen() { JFileChooser file = new JFileChooser();//Objeto de tipo File Chosser para seleccionar la ruta de la imagen File ruta = null;// como la ruta cambia de direccion, la inicializo a null como contador int estado = file.showOpenDialog(null);//guardo el estado en un entero if (estado == JFileChooser.APPROVE_OPTION) {//Si presiono en aceptar entonces se procesa a guardar la direccion ruta = file.getSelectedFile();//se guarda la ruta que se selecciono ImageIcon imagen = new ImageIcon(ruta.toString());//creamos el icono con la imagen que se selecciono Image imagenn = imagen.getImage(); Icon icono = new ImageIcon(imagenn.getScaledInstance(Imagenes.getWidth(), Imagenes.getHeight(), Image.SCALE_DEFAULT));//Redimencionamos la imagen del icono auxiliar.setVisible(false); Imagenes.setVisible(true); Imagenes.setIcon(icono); images.add(posicion, Imagenes); direcciones.add(posicion, ruta.toString()); Usuario1.setText(images.size() + ""); posicion++; Rposi(posicion); EstadoImg.setText(actualposi() + ""); Eliminar.setVisible(true); Vaciar.setVisible(true); Duplicado.setVisible(true); eli_duplicados.setVisible(true); if (images.size() == 1) { Anterior.setVisible(false); Siguiente.setVisible(false); } else { Anterior.setVisible(true); Siguiente.setVisible(true); } repaint(); //Rposi(posicion); } else { JOptionPane.showMessageDialog(null, "No se selecciono ningún archivo", "Atención", 2); } }Método que obtiene el nombre de la PC para que se muestre al inicio y en el panel
public void Obtener_Nombre() throws UnknownHostException { String path2 = "/imagenes/user.png"; URL url2 = this.getClass().getResource(path2); ImageIcon iconfondo = new ImageIcon(url2); InetAddress address = InetAddress.getLocalHost(); String b = address.getHostName(); JOptionPane.showMessageDialog(null, "Bienvenido " + b, "Bienvenido", 2, iconfondo); Totalmg.setText(b); }El método que nos ayudará a avanzar hacía atrás
public void atras() { if (!direcciones.isEmpty()) { int au = actualposi(); Imagenes.setVisible(false); auxiliar.setVisible(false); // repaint(); if ((au < 0) || (au > images.size())) { posicion = 0; Rposi(posicion); } int ex=actualposi()-1; if(ex<0 actualposi="" auxiliar.seticon="" auxiliar.setvisible="" direcciones.get="" else="" estadoimg.settext="" ex="" icon="" icono="" image.scale_default="" image="" imageicon="" imagen="new" imagenes.getheight="" imagenn.getscaledinstance="" imagenn="imagen.getImage();" magenes.getwidth="" pre="" repaint="" rposi="" true=""> El método para avanzar hacía adelante, similar al método de atrásLes dejo el Link de descarga:public void siguiente() { try{ if (!direcciones.isEmpty()) { int au = actualposi(); Imagenes.setVisible(false); auxiliar.setVisible(false); if ((au > images.size()) || (au < 0)) { posicion = images.size(); Rposi(posicion); } int aux=actualposi()+1; if(aux>images.size()){ aux=images.size(); }else{ aux=actualposi()+1; } ImageIcon imagen = new ImageIcon(direcciones.get(aux));//creamos el icono con la imagen que se selecciono Rposi(aux); Image imagenn = imagen.getImage(); Icon icono = new ImageIcon(imagenn.getScaledInstance(Imagenes.getWidth(), Imagenes.getHeight(), Image.SCALE_DEFAULT)); auxiliar.setIcon(icono); auxiliar.setVisible(true); EstadoImg.setText(actualposi() + ""); repaint(); } }catch(Exception e){ } }Método para eliminar la imagen actualpublic void eliminar() { try{ if (!images.isEmpty()) { if (!((actualposi() < 0) || (actualposi() > images.size()))) { images.remove(actualposi()); direcciones.remove(actualposi()); posicion--; Rposi(posicion); Usuario1.setText("" + images.size()); EstadoImg.setText(actualposi()+ ""); if(images.size()==0){ Imagenes.setVisible(false); Eliminar.setVisible(false); Vaciar.setVisible(false); }else{ atras(); } repaint(); } } }catch(Exception e){ } }Método para eliminar todas las imagenespublic void eliminar() { try{ if (!images.isEmpty()) { if (!((actualposi() < 0) || (actualposi() > images.size()))) { images.remove(actualposi()); direcciones.remove(actualposi()); posicion--; Rposi(posicion); Usuario1.setText("" + images.size()); EstadoImg.setText(actualposi()+ ""); if(images.size()==0){ Imagenes.setVisible(false); Eliminar.setVisible(false); Vaciar.setVisible(false); }else{ atras(); } repaint(); } } }catch(Exception e){ } }Método para buscar los duplicadospublic void buscar_dublicados(){ SetMétodo para eliminar los duplicadoss1 = new HashSet (); for ( String a : direcciones) if (!s1.add(a)) JOptionPane.showMessageDialog(null, "Imágenes duplicadas\n"+a,"Duplicados",2); } public void eliminar_duplicados(){ Setunicas = new HashSet (); Set duplicadas = new HashSet (); for (String a : direcciones) if (!unicas.add(a)) duplicadas.add(a); direcciones.removeAll(duplicadas); images.removeAll(duplicadas); Rposi(direcciones.size()); Usuario1.setText(""+images.size()); EstadoImg.setText(""+actualposi()); } 0>
http://www.mediafire.com/file/9ycfii4eouu662u/pree.rar
Espero y les sea de mucha ayuda, saludos!
Created By Iván Luis Jiménez
álbum de imágenes con colecciones
álbum de imágenes en java
colecciones en java
java
java collections
uso de colecciones en álbum de imágenes
- Obtener vínculo
- X
- Correo electrónico
- Otras apps
Comentarios
Publicar un comentario