- 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*/
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());
}
0>
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
á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