Carrusel de imágenes en java


En el blog anterior creamos un login el cual lo puedes ver aquí, este sería una continuación ,ya que al mismo login le agregaremos un carrusel de imágenes para un aspecto más profesional.




En un folder dentro de nuestro proyecto adicionaremos las imágenes que se desean poner para el carrusel, en este caso se pusieron las 3 mostradas al fueron nombradas como :"login1", "login2", "login3".

Ya con las imágenes listas tendremos que implementar la interfaz Runnable con su respectivo método "public void run()"





Declara una variable global de la clase Thread llamado "hilo" y dentro del método run se pondrá el siguiente código:

 
 Thread hilo=null;//variable global
 
@Override
public void run() {
 while (hilo != null) {
  try {

   for (int i = 1; i <= 3; i++) {
    lblImagen.setIcon(new ImageIcon("imagenes/login" + i + ".jpg"));
    Thread.sleep(3000);//indica el tiempo de pausa para cada imágen

   }
  } catch (Exception e) {
   System.out.println(e.getMessage());
  }
 }
}


ahora falta inicializar el hilo y hacer que se inicie, para ello se tendrá que poner el siguiente código dentro del constructor:

 
 public LoginJava() { 
  hilo = new Thread(this);
  hilo.start();
}

Aqui el código completo:

 
package paq;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.Font;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.border.MatteBorder;

public class LoginJava extends JFrame implements ActionListener, MouseMotionListener, MouseListener, Runnable {

 private static final long serialVersionUID = 1L;
 private JPanel contentPane;
 private JPanel panel;
 private JLabel lblImagen;
 private JLabel lblLogin;
 private JTextField txtUsuario;
 private JPasswordField jpass;
 private JLabel lblUsu;
 private JLabel lblPass;
 private JButton btnIngresar;
 private JButton button;
 private int x, y;
 private JButton btnVisible;
 private JLabel lblUsuario;
 private JLabel lblContrasea;
 boolean visible = false;
 Thread hilo;

 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   public void run() {
    try {
     LoginJava frame = new LoginJava();
     frame.setVisible(true);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  });
 }

 public LoginJava() {
  
  hilo = new Thread(this);
  hilo.start();
  
  addMouseListener(this);
  addMouseMotionListener(this);
  setUndecorated(true);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setBounds(100, 100, 663, 387);
  contentPane = new JPanel();
  contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  setContentPane(contentPane);
  contentPane.setLayout(null);

  panel = new JPanel();
  panel.setBackground(Color.BLACK);
  panel.setBounds(0, 0, 324, 387);
  contentPane.add(panel);
  panel.setLayout(null);

  lblLogin = new JLabel("Login");
  lblLogin.setBorder(new MatteBorder(0, 0, 5, 0, (Color) new Color(0, 0, 153)));
  lblLogin.setForeground(Color.WHITE);
  lblLogin.setHorizontalAlignment(SwingConstants.CENTER);
  lblLogin.setFont(new Font("Times New Roman", Font.PLAIN, 40));
  lblLogin.setBounds(94, 68, 132, 59);
  panel.add(lblLogin);

  txtUsuario = new JTextField();
  txtUsuario.setBounds(81, 196, 161, 25);
  panel.add(txtUsuario);
  txtUsuario.setColumns(10);

  jpass = new JPasswordField();
  jpass.setBounds(81, 261, 161, 25);
  panel.add(jpass);

  lblUsu = new JLabel("");
  lblUsu.setHorizontalAlignment(SwingConstants.CENTER);
  lblUsu.setBounds(24, 185, 40, 40);
  lblUsu.setIcon(new ImageIcon("imagenes/user.png"));
  panel.add(lblUsu);

  lblPass = new JLabel("");
  lblPass.setHorizontalAlignment(SwingConstants.CENTER);
  lblPass.setBounds(24, 256, 40, 40);
  lblPass.setIcon(new ImageIcon("imagenes/contrasenia.png"));
  panel.add(lblPass);

  btnIngresar = new JButton("Ingresar");
  btnIngresar.addActionListener(this);
  btnIngresar.setBorder(null);
  btnIngresar.setBackground(new Color(0, 0, 102));
  btnIngresar.setFocusPainted(false);
  btnIngresar.setForeground(new Color(255, 255, 255));
  btnIngresar.setBounds(81, 311, 161, 23);
  panel.add(btnIngresar);

  btnVisible = new JButton("");
  btnVisible.addActionListener(this);
  btnVisible.setBorder(null);
  btnVisible.setBackground(new Color(0, 0, 0));
  btnVisible.setBounds(252, 262, 40, 24);
  btnVisible.setIcon(new ImageIcon("imagenes/visible.png"));
  panel.add(btnVisible);

  lblUsuario = new JLabel("Usuario ");
  lblUsuario.setFont(new Font("Tahoma", Font.PLAIN, 14));
  lblUsuario.setHorizontalAlignment(SwingConstants.CENTER);
  lblUsuario.setForeground(new Color(255, 255, 255));
  lblUsuario.setBounds(81, 169, 161, 14);
  panel.add(lblUsuario);

  lblContrasea = new JLabel("Contrase\u00F1a");
  lblContrasea.setFont(new Font("Tahoma", Font.PLAIN, 14));
  lblContrasea.setHorizontalAlignment(SwingConstants.CENTER);
  lblContrasea.setForeground(new Color(255, 255, 255));
  lblContrasea.setBounds(81, 232, 161, 14);
  panel.add(lblContrasea);

  button = new JButton("");
  button.setBackground(new Color(0, 0, 0));
  button.addActionListener(this);
  button.setBounds(603, 11, 50, 40);
  button.setIcon(new ImageIcon("imagenes/salir.png"));
  contentPane.add(button);

  lblImagen = new JLabel("");
  lblImagen.setBounds(323, 0, 340, 387);
  contentPane.add(lblImagen);
  lblImagen.setIcon(new ImageIcon("imagenes/fondo.jpg"));

  

 }

 public void actionPerformed(ActionEvent arg0) {
  if (arg0.getSource() == btnIngresar) {
   actionPerformedBtnIngresar(arg0);
  }
  if (arg0.getSource() == btnVisible) {
   actionPerformedButton_1(arg0);
  }
  if (arg0.getSource() == button) {
   actionPerformedButton(arg0);
  }
 }

 protected void actionPerformedButton(ActionEvent arg0) {
  System.exit(0);
 }

 public void mouseDragged(MouseEvent arg0) {
  if (arg0.getSource() == this) {
   mouseDraggedThis(arg0);
  }
 }

 public void mouseMoved(MouseEvent arg0) {
 }

 protected void mouseDraggedThis(MouseEvent arg0) {
  int x1 = arg0.getXOnScreen();
  int y1 = arg0.getYOnScreen();
  this.setLocation(x1 - x, y1 - y);
 }

 public void mouseClicked(MouseEvent arg0) {
 }

 public void mouseEntered(MouseEvent arg0) {
 }

 public void mouseExited(MouseEvent arg0) {
 }

 public void mousePressed(MouseEvent arg0) {
  if (arg0.getSource() == this) {
   mousePressedThis(arg0);
  }
 }

 public void mouseReleased(MouseEvent arg0) {
 }

 protected void mousePressedThis(MouseEvent e) {
  x = e.getX();
  y = e.getY();
 }

 protected void actionPerformedButton_1(ActionEvent arg0) {

  if (visible == true) {
   btnVisible.setIcon(new ImageIcon("imagenes/visible.png"));
   jpass.setEchoChar('•');
   visible = false;

  } else {

   btnVisible.setIcon(new ImageIcon("imagenes/-visible.png"));
   jpass.setEchoChar((char) 0);
   visible = true;
  }
 }

 protected void actionPerformedBtnIngresar(ActionEvent arg0) {
  String usuario = txtUsuario.getText().trim();
  String password = String.valueOf(jpass.getPassword());
  if (!usuario.equals("") || !password.equals("")) {
   if (usuario.equals("admin") && password.equals("123456")) {
    JOptionPane.showMessageDialog(this, "Bienvenido al sistema " + usuario, "Mensaje de Bienvenida", 1);
   } else {
    JOptionPane.showMessageDialog(this, "Usuario y/o contraseñas incorrecta", "Error", 0);
   }
  } else {
   JOptionPane.showMessageDialog(this, "El campo usuario y contraseña son obligatorios", "Error", 0);
  }
 }

 @Override
 public void run() {
  while (hilo != null) {
   try {

    for (int i = 1; i <= 3; i++) {
     lblImagen.setIcon(new ImageIcon("imagenes/login" + i + ".jpg"));
     Thread.sleep(3000);//indica el tiempo de pausa para cada imágen

    }
   } catch (Exception e) {
    System.out.println(e.getMessage());
   }
  }
 }
}

Comentarios