Tema: ProgressBar
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/09/2013, 14:35
lucho248
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 14 años, 2 meses
Puntos: 5
ProgressBar

Hola amigos, necesito una mano con lo siguiente.
tengo una app (anda peeeero) que quiero agregarle cuando inicia un progressbar simple (hasta que carga los datos de usuario y pass con hibernate para loggear el usuario).

pero no logro hacer que corra el progressbar y a la par inicie y cargue el hibernate con los usuarios existentes para hacer la prueba de usuarios correctos/invalidos.

el progress con correr y cerrarse ya esta, es solo para distraer al usuario minetras se inicia el hibernate. (me hace una ejecución lineal... corre el progress y cuando termina comienza a cargar los user-pass)


Código Ventana del loggin:
Ver original
  1. package Presentacion.Login;
  2.  
  3. import javax.swing.*;
  4.  
  5. import org.hibernate.Query;
  6. import org.hibernate.Session;
  7.  
  8. import Fisica.SessionFactoryUtil;
  9. import Hibernate.Usuario;
  10. import Presentacion.Main.Principal;
  11. import Presentacion.Login.Progress;
  12.  
  13. import java.io.*;
  14. import java.util.Iterator;
  15. import java.util.List;
  16. import java.awt.*;
  17. import java.awt.event.*;
  18.  
  19. public class VentanaLogin extends JFrame
  20. {
  21.         private JTextField txtUser, txtPass;
  22.         private JLabel lblUser, lblPass;
  23.         private JButton btnAceptar, btnCancelar;
  24.         String usuario, elPassword;
  25.         public int user;
  26.         public String titulo;
  27.         List<Usuario> listUser;
  28.  
  29.     public VentanaLogin()
  30.     {
  31.         Progress p = new Progress();
  32.         p.verBarra();
  33.        
  34.         listUser = this.consultaUser();
  35.        
  36.         Container contenedor = getContentPane();
  37.         contenedor.setLayout(new FlowLayout());
  38.  
  39.         // crear etiqueta y cuadro de texto del usuario
  40.         txtUser = new JTextField(10);
  41.         lblUser = new JLabel("Usuario: ");
  42.         txtUser.setToolTipText("Escriba su nombre de usuario");      
  43.         contenedor.add( Box.createVerticalStrut(50) );
  44.         contenedor.add(lblUser);
  45.         contenedor.add(txtUser);
  46.  
  47.         //crear etiqueta y cuadro de texto del pw
  48.         txtPass = new JPasswordField(10);
  49.         lblPass = new JLabel("Contraseña: ");
  50.         txtPass.setToolTipText("Escriba su contraseña");
  51.         contenedor.add(lblPass);
  52.         contenedor.add(txtPass);
  53.  
  54.         //Crear y agregar los botones
  55.         btnAceptar = new JButton("Aceptar");
  56.         //establecer Boton aceptar por defecto
  57.         getRootPane().setDefaultButton(btnAceptar);
  58.  
  59.         btnCancelar = new JButton("Cancelar");
  60.         contenedor.add(btnAceptar);
  61.         contenedor.add(btnCancelar);
  62.  
  63.  
  64.       // Crear un escuchador al boton Aceptar
  65.         ActionListener escuchadorbtnAceptar = new ActionListener()
  66.         {
  67.             public void actionPerformed(ActionEvent evt)
  68.             {
  69.                 try
  70.                 {                  
  71.                     //chekar si el usuario escrbio el nombre de usuario y pw
  72.                     if (txtUser.getText().length() > 0 && txtPass.getText().length() > 0 )
  73.                     {
  74.                         // Si el usuario si fue validado correctamente
  75.                         if( validarUsuario( txtUser.getText(), txtPass.getText() ) )    //enviar datos a validar
  76.                         {
  77.                             // Codigo para mostrar la ventana principal
  78. //                            setVisible(false);
  79.                             dispose();
  80.                             Principal ventana1 = new Principal(user, titulo.toUpperCase());
  81.                          }
  82.                         else
  83.                         {
  84.                             JOptionPane.showMessageDialog(null, "El nombre de usuario y/o contrasenia no son validos.");
  85. //                            JOptionPane.showMessageDialog(null, txtUser.getText()+" " +txtPass.getText() );
  86.                             txtUser.setText("");    //limpiar campos
  87.                             txtPass.setText("");      
  88.                              
  89.                             txtUser.requestFocusInWindow();
  90.                         }
  91.  
  92.                     }
  93.                     else
  94.                     {
  95.                         JOptionPane.showMessageDialog(null, "Debe escribir nombre de usuario y contrasenia.\n" +
  96.                             "NO puede dejar ningun campo vacio");
  97.                     }
  98.  
  99.                 } catch (Exception e)
  100.                 {
  101.                     e.printStackTrace();
  102.                 }
  103.                  
  104.             }
  105.         };
  106.         btnAceptar.addActionListener(escuchadorbtnAceptar);      // Asociar escuchador para el boton Aceptar
  107.  
  108.  
  109.       // Agregar escuchador al boton Cancelar
  110.         ActionListener escuchadorbtnCancelar=new ActionListener()
  111.         {
  112.             public void actionPerformed(ActionEvent evt)
  113.             {
  114.                 System.exit(0);         // terminar el programa
  115.             }
  116.         };
  117.         btnCancelar.addActionListener(escuchadorbtnCancelar);      // Asociar escuchador para el boton Cancelar
  118.         setTitle("Autentificacion de usuarios");
  119.         setSize(400,150);           // Tamaño del Frame
  120.         setResizable(false);       // que no se le pueda cambiar el tamaño
  121.         //Centrar la ventana de autentificacion en la pantalla
  122.         Dimension tamFrame=this.getSize();//para obtener las dimensiones del frame
  123.         Dimension tamPantalla=Toolkit.getDefaultToolkit().getScreenSize();      //para obtener el tamanio de la pantalla
  124.         setLocation((tamPantalla.width-tamFrame.width)/2, (tamPantalla.height-tamFrame.height)/2);  //para posicionar
  125.         setVisible(true);           // Hacer visible al frame
  126.  
  127.     }   // fin de constructor
  128.  
  129.     //prueba hilo de ejecucion
  130.    
  131.    
  132.     boolean validarUsuario(String elUsr, String elPw)  throws IOException
  133.     {
  134.         try
  135.         {
  136.             Iterator<Usuario> i = listUser.listIterator();
  137.             Usuario u;
  138.             usuario = elUsr.toLowerCase();
  139.             elPassword = elPw.toLowerCase();
  140.             while (i.hasNext()) {
  141.                 u = i.next();
  142.                
  143.                 if(u.getUser().equals(usuario) && u.getPass().equals(elPassword)){
  144.                     this.user = u.getKey();
  145.                     this.titulo = u.getUser().toUpperCase();
  146.                     return true;
  147.                 }
  148.             }
  149.             return false;        //usuario validado incorrectamente
  150.                  
  151.         } catch (Exception e)
  152.         {
  153.             e.printStackTrace();
  154.             return false;
  155.         }
  156.  
  157.     }
  158.    
  159.     public List<Usuario> consultaUser(){
  160.         Session session = SessionFactoryUtil.getSessionFactory().getCurrentSession();
  161.         session.beginTransaction();
  162.        
  163.         List<Usuario> list = null;
  164.         Query query = session.createQuery("from Usuario");
  165.         list = query.list();
  166.        
  167.         session.getTransaction().commit();
  168.         SessionFactoryUtil.getSessionFactory().close();
  169.        
  170.         return list;
  171.    }
  172.      
  173.     public static void main(String[] args)
  174.     {
  175.         VentanaLogin prueba = new VentanaLogin();
  176.         prueba.setDefaultCloseOperation(prueba.EXIT_ON_CLOSE);
  177.     }
  178.  
  179. }

Código Clase Progress:
Ver original
  1. package Presentacion.Login;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import javax.swing.*;
  6.  
  7.     public class Progress extends JFrame {
  8.    
  9.     JProgressBar current;
  10.     JTextArea out;
  11.     JButton find;
  12.     Thread runner;
  13.     int num = 0;
  14.     static int x, y;
  15.    
  16.     public Progress() {
  17.         super("Cargando");
  18.        
  19.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  20.         JPanel pane = new JPanel();
  21.         pane.setLayout(new FlowLayout());
  22.         current = new JProgressBar(0, 2000);
  23.         current.setValue(0);
  24.         current.setStringPainted(true);
  25.         pane.add(current);
  26.         setContentPane(pane);
  27.     }
  28.          
  29.    
  30.     public void iterate() {
  31.         while (num < 2000) {
  32.         current.setValue(num);
  33.         try {
  34.             Thread.sleep(90);
  35.         } catch (InterruptedException e) { }
  36.         num += 95;
  37.         }
  38.     }
  39.    
  40.     public static void tamaño() {
  41.         //Obtiene el tamaño de la pantalla
  42.         Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
  43.         //obtiene la resolucion de la pantalla en PPP (Puntos por pulgada)
  44.         int sr = Toolkit.getDefaultToolkit().getScreenResolution();
  45.         x = d.width;
  46.         y = d.height;
  47.        }
  48.    
  49.     public void verBarra() {
  50.         tamaño();
  51.         Progress frame = new Progress();
  52.         frame.pack();
  53.         frame.setVisible(true);
  54.         frame.setLocation(2*x/5, 2*y/5);
  55.        
  56.         frame.iterate();
  57.         frame.setVisible(false);
  58.     }
  59.    
  60.     public static void main(String[] arguments) {
  61.         tamaño();
  62.         Progress frame = new Progress();
  63.         frame.pack();
  64.         frame.setVisible(true);
  65.         frame.setLocation(2*x/5, 2*y/5);
  66.         frame.iterate();
  67.         frame.setVisible(false);
  68.     }
  69.    
  70. }

no se si me explico bien, lo que necesito es que corra el progress mientras se van cargando los usuarios y pass en memoria, para cuando abre la ventana de LOGGIN.
(si la ventana de PROGRESS sigue corriendo no importa, quedria atras de la de LOGGIN y cuando termina el progress se cierra, atras del LOGGIN y no se ve.) para luego validar cuando ingresa el usuario. Es mas para que el usuario no rompa los quinotos que el sistema no le responde o esta lento cuando lo inicia. Mostrarle algo que el sistema esta arrancando.

Bueno espero comentario si se puede mejorar u otra idea mejor, de alguien que haya pasado por esto.
Saludos, y desde ya muchas gracias.