Filtro CPL Polarizado ventajas

Álbum de imágenes con colecciones en Java (uso de Vector, HashSet) - java collections

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:


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*/
    Vector 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
En la parte del constructor tenemos:
    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ás
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 actual
public 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 imagenes
public 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 duplicados
 public void buscar_dublicados(){

        Set s1 = new HashSet();
        for ( String a : direcciones)
            if (!s1.add(a))
                JOptionPane.showMessageDialog(null, "Imágenes duplicadas\n"+a,"Duplicados",2);
        
    }
Método para eliminar los duplicados
public void eliminar_duplicados(){
        Set unicas = 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());
    }

Les dejo el Link de descarga:
http://www.mediafire.com/file/9ycfii4eouu662u/pree.rar
 Espero y les sea de mucha ayuda, saludos!

Created By Iván Luis Jiménez

Comentarios