TaT AvbravoTipsJavaSwing

(Difference between revisions)
(Created page with '==="Trucos Java Swing=== Contributed By; AVBravo '''Descargar el plugin desde''' [http://plugins.netbeans.org/plugin/39424/?show=true Desca…')
(Tablas JTable)
 
(36 intermediate revisions not shown)
Line 1: Line 1:
==="Trucos Java Swing===
==="Trucos Java Swing===
   Contributed By; [[Aristides Villarreal Bravo  | AVBravo]]
   Contributed By; [[Aristides Villarreal Bravo  | AVBravo]]
-
 
-
'''Descargar el plugin desde'''
 
-
  [http://plugins.netbeans.org/plugin/39424/?show=true Descargar plugin]
 
-
----
 
-
  Muestra como utilizar le plugin para crear tu propio api de persistencia
 
-
 
-
[[File:Proyecto.png]]
 
-
 
-
  Ahora agregamos el Driver JDBC MYSQL
 
-
  [[File:Libraries.png]]
 
-
 
-
  dar clic en el plugin
 
-
  [[File:Plugin.png]]
 
-
 
-
  Seleccionamos la base de datos
 
-
  [[File:Databases.png]]
 
-
 
-
  Tenemos el API generado
 
-
  [[File:Source.png]]
 
-
 
-
  Damos clic derecho en el nombre del proyecto y seleccionamos Limpiar y 
 
-
  Construir
 
-
  [[File:Test.png]]
 
-
  Ahora en la carpeta dist de nuestro proyecto tenemos el jar con la
 
-
  persistencia de nuestra base de datos
 
-
  [[File:Jar.png]]
 
-
 
-
  Ahora creamos un nuevo proyecto
 
-
  [[File:Application.png]]
 
-
 
-
  En las propiedades del proyecto, agregamos el driver jdbc MySQL y el API de
 
-
  persistencia correspondiente al proyecto anterior que creamos.(archivo .jar)
 
-
  [[File:Jar2.png]]
 
-
 
-
  Bibliotecas necesarias
 
-
  [[File:Bibliotecas.png]]
 
-
 
-
  Esta es la clase principal
 
-
  [[File:Principal.png]]
 
-
 
 
-
  Agregamos el api
 
-
  [[File:Agregar.png]]
 
-
 
-
====Metodos..====
 
-
 
-
== Crear() ==
 
-
 
-
  Crea un registro nuevo en la tabla. Devuelve boolean si fue exitoso.
 
-
  Verifica que los campos requeridos tengan valores.
 
-
  Verifica si ya existe un registro con esos datos.
 
-
    Usuarios u = new Usuarios();
 
-
    UsuariosController uc = new UsuarioController();
 
-
    u.setCedula("1-1-1");
 
-
    u.setNombre("name");
 
-
    if(uc.Crear(u)){
 
-
      System.out.println("Guardado exitosamente”);
 
-
    }else{
 
-
      System.out.println("No se guardo el registro”);
 
-
    }
 
-
 
-
 
-
----
 
-
 
-
== Editar() ==
 
-
 
-
 
-
  Edita el registro actual. Devuelve boolean si fue exitoso.
 
-
  Verifica que los campos requeridos tengan valores.
 
-
    Usuarios u = new Usuarios();
 
-
    UsuariosController uc = new UsuariosController();
 
-
    u.setCedula("1-1-1");
 
-
    u.setNombre("new name");
 
-
    if(uc.Editar(u)){
 
-
      System.out.println(" Se edito exitosamente");
 
-
    }
 
-
    else{
 
-
      System.out.println("No se actualizo el registro");
 
-
    }
 
-
 
-
== EditarClavePrimaria() ==
 
-
 
-
 
-
Se utiliza cuando deseamos editar la clave primaria, se utilizan dos objetos 
 
-
uno  con los valores anteriores y otro se actualizara con los
 
-
nuevos valores en la clave primaria. Se cambiara el username avbravo por 
 
-
avbravo1
 
-
 
-
'''Nota:''' Para tablas relacionadas debe ser establecida la actualizacion en
 
-
cascada para las tablas relacionadas.
 
-
        User user_old = new User();
 
-
        User user_new = new User();
 
-
        UserController uc = new UserController();
 
-
        //indicamos la clave primaria existente
 
-
        user_old.setUsername("avbravo");
 
-
        User u = uc.findByPrimaryKey(user_old);
 
-
        if (u != null) {       
 
-
            user_old = u;
 
-
            //indicamos la nueva clave primaria
 
-
            user_new.setUsername("avbravo1");       
 
-
            if (uc.EditarClavePrimaria(user_old, user_new)){
 
-
                System.out.println("Se actualizo la clave primaria");
 
-
            }
 
-
            else{
 
-
                System.out.println("no se actualizo");
 
-
            }
 
-
        } else {
 
-
            System.out.println("No hay registros");
 
-
        }
 
-
 
-
[[File:Cascada.png‎]]
 
-
 
-
== Eliminar() ==
 
-
 
 
-
Elimina el registro actual. Devuelve boolean si fue exitoso.
 
-
  Usuarios u = new Usuarios();
 
-
  UsuariosController uc = new UsuariosController();
 
-
  u.setCedula("1-1-1");
 
-
  if (Mensajeria.PreguntaSiNo("Desea eliminar el usuario", 
 
-
      "Usuarios").equals("si")) {
 
-
      if (uc.Eliminar(u)) {
 
-
          System.out.println(" Se elimino exitosamente");
 
-
      } else {
 
-
        System.out.println(""No se elimino el registro");
 
-
    }
 
-
  }
 
-
 
-
 
-
----
 
-
 
-
== EliminarTodos() ==
 
-
 
-
    Elimina todos los registros de la tabla. Devuelve boolean si fue exitoso.
 
-
    Usuarios u = new Usuarios();
 
-
    UsuariosController uc = new UsuariosController();
 
-
    u.setCedula("1-1-1");
 
-
    if (Mensajeria.PreguntaSiNo("Desea eliminar todos los usuario",
 
-
      "Usuarios").equals("si")
 
-
    {
 
-
    if (uc.EliminarTodos()) {
 
-
        System.out.println(" Se eliminaron todos los usuarios exitosamente");
 
-
      } else {
 
-
        System.out.println("No se eliminaron los usuarios");
 
-
    }
 
-
  }
 
-
 
-
== ExisteRegistro(Clase) ==
 
-
  Devuelve un booleano si existe el registro.
 
-
  Usuarios u = new Usuarios();
 
-
  UsuariosController uc = new UsuariosController();
 
-
  u.setCedula("1-1-1");
 
-
  if(uc.ExisteRegistro(u)){
 
-
    System.out.println("Existe un registro con esa cédula");
 
-
  } else {
 
-
    System.out.println("NO existe un registro con esa cédula");
 
-
  }
 
-
----
 
-
 
-
== findByPrimaryKey() ==
 
-
 
-
  Encuentra el registro con la clave primaria. Se debe asignar la llave primaria 
 
-
  a buscar.
 
-
  Devuelve un objeto con los resultados o null si no encuentra el registro.
 
-
  Usuarios u = new Usuarios();
 
-
  UsuariosController uc = new UsuariosController();
 
-
  u.setCedula("1-1-1");
 
-
  Usuarios u2 = uc.findByPrimaryKey(u);
 
-
  if (u2 != null) {
 
-
    u = u2;
 
-
    System.out.println(" Nombre" + u.getNombre());
 
-
  } else {
 
-
    System.out.println("No se encontro un registro con esa clave");
 
-
  }
 
-
 
-
----
 
-
 
-
== findBy... ==
 
-
 
-
 
-
  Se crean los metodos con todos los campos para realizar la busqueda y
 
-
  devuelve un boolean indicando si se encontro y se carga la lista de objetos de   
 
-
  esa clase que podemos recorrer.
 
-
 
-
 
-
----
 
-
 
-
== findByNombre ==
 
-
    Usuarios u = new Usuarios();
 
-
    UsuariosController uc = new UsuariosController();
 
-
    u.setNombre("name");
 
-
    if(uc.findByNombre(u)){
 
-
      for(Usuarios u1:uc.getUsuarioslist()){
 
-
        System.out.println("cedula "+ u1.getCedula() + " nombre " +
 
-
        u1.getNombre());
 
-
      }
 
-
    }
 
-
    else{
 
-
      System.out.println("No se encontro un registros con ese nombre");
 
-
    }
 
-
 
-
----
 
-
 
-
== findByMapa() ==
 
-
 
-
    Parametros para Consultas.
 
-
    1.Crear un Map para indicar los parametros
 
-
    2. Establece los parametros mediante el metodo put
 
-
    3. Llamar al metodo findByMapa
 
-
    4. Si no hay registros devuelve false
 
-
      4.1 Si es un solo registros obtenemos el primero posición 0
 
-
        UsuariosController uc = new UsuariosController();
 
-
        Map<String, String> parametros = new HashMap<String, String>();
 
-
        parametros.put("nombre", "uno");
 
-
        if(uc.findByMapa(parametros)){
 
-
          for(Usuarios u: uc.getUsuarioslist()){
 
-
            System.out.println("cedula " + u.getCedula() + "nombre " + u.getNombre());
 
-
        }
 
-
        }else{
 
-
          System.out.println("No existen registros con esa condicion”);
 
-
        }
 
-
      Nota: El Query puede ser usado para consultas también.
 
-
 
-
== Query() ==
 
-
'''Para consultas se puede implementar la clausula where'''
 
-
  String sql = "nombre= 'aristides villarreal bravo' order by cedula desc";
 
-
  if (uc.Query(sql)) {
 
-
    for( Usuarios u: uc.getUsuarioslist()){
 
-
    System.out.println("cedula " + u.getCedula() + "nombre " + u.getNombre());
 
-
    }
 
-
  } else {
 
-
    System.out.println("No existen registros con esa condicion");
 
-
  }
 
-
 
-
'''//Tambien para obtener la lista ordenada'''
 
-
  String sql = "order by cedula desc";
 
-
  if (uc.Query(sql)) {
 
-
    for( Usuarios u: uc.getUsuarioslist()){
 
-
    System.out.println("cedula " + u.getCedula() + "nombre " + u.getNombre());
 
-
    }
 
-
  } else {
 
-
    System.out.println("No existen registros con esa condicion"); 
 
-
      }
 
-
 
-
== Listar() ==
 
-
 
-
Devuelve una lista de objetos, la operación que realiza es select * from tabla
 
-
  Usuarios u = new Usuarios();
 
-
  UsuariosController uc = new UsuariosController();             
 
-
  if(uc.Listar()){
 
-
    for( Usuarios u: uc.getUsuarioslist()){
 
-
    System.out.println("cedula " + u.getCedula() + "nombre " + u.getNombre());
 
-
    }
 
-
  }else{
 
-
System.out.println("No existen registros");
 
-
  }
 
-
 
-
== Informe de Generacion ==
 
-
 
-
  El plugin genera el archivo llamado InformeGeneracion.txt
 
-
  en el directorio generales en el que se incluyen los mensajes del proceso y la 
 
-
  verificacion de la estructura de las tablas, como por ejemplo
 
-
  1. Te la tabla tenga llave primaria
 
-
  2. Que no tenga claves foraneas de manera ciclica(haciendo referencia a ella
 
-
    misma)
 
-
 
-
[[File:Tablas.png]]
 
-
 
-
== Combo==
 
-
  Cargar un Combo
 
-
 
-
  [[File:Combo.png]]
 
-
 
-
  Arrastramos las clases al formulario.
 
-
  En Bibliotecas-> TestPersistence.jar-> En el paquete beans arrastramos   
 
-
  Usuarios.class y controller arrastramos UsuariosController.class
 
-
  [[File:Arrastrar.png]]
 
-
 
-
  Si usamos SwingX arrastramos un JXComboBox o un simple JComboBox
 
-
  en el init del formulario. Agregamos
 
-
  AutoCompleteDecorator.decorate(jXComboBoxUsuarios);
 
-
  CargarCombo();
 
-
 
-
 
-
'''Ahora cargamos el combo'''
 
-
  private void CargarCombo() {
 
-
        try {
 
-
            jXComboBoxUsuarios.removeAllItems();
 
-
            if (usuariosController1.Listar()) {
 
-
                for (Usuarios u : usuariosController1.getUsuarioslist()) {
 
-
                    jXComboBoxUsuarios.addItem(u.getNombre());
 
-
                }
 
-
            } else {
 
-
                Mensajeria.Mensaje("No existen registros de usuarios");
 
-
            }
 
-
        } catch (Exception ex) {
 
-
            Mensajeria.MensajeError(ex, "CargarCombo()");
 
-
        }
 
-
    }
 
-
 
-
'''Ahora en el actionPerformed del combo'''
 
-
try {
 
-
            int a = jXComboBoxUsuarios.getSelectedIndex();
 
-
            if (a != -1) {
 
-
                usuarios1 = usuariosController1.getUsuarioslist().get(a);
 
-
                jTextFieldCedula.setText(usuarios1.getCedula());
 
-
                jTextFieldNombre.setText(usuarios1.getNombre());
 
-
 
-
            }
 
-
        } catch (Exception ex) {
 
-
            Mensajeria.MensajeError(ex, "Seleccion Combo()");
 
-
        }
 
-
 
-
 
-
'''Seleccionar automáticamente un elemento'''
 
-
 
-
  jXComboBoxUsuarios.setSelectedItem(usuarios1.getNombre());
 
-
 
-
 
-
'''Formulario Edicion combos relacionados'''
 
-
  Si tenemos tablas relacionadas y esta las mostramos mediante combos como se   
 
-
  muestra en la siguiente figura.
 
-
[[File:Miscombos2011.png‎]]
 
-
 
-
  Cuando seleccionamos el primer combo y establecemos el setSelected para el
 
-
  siguiente combo, en el metodo de validación de este debemos llamar nuevamente
 
-
  al metodo listar.
 
-
'''En el init()'''
 
-
cargamos los dos combos
 
-
  CargarComboGrupoGastoSegunObjeto();
 
-
        CargarComboGastos();
 
-
-------------------------------
 
-
private void CargarComboGastos() {
 
-
        try {
 
-
            jXComboBoxGastos.removeAllItems();
 
-
            if (gastossegunobjetoController1.Listar()) {
 
-
                for (Gastossegunobjeto gastossegunobjeto : 
 
-
              gastossegunobjetoController1.getGastossegunobjetolist()) {
 
-
               
 
-
    jXComboBoxGastos.addItem(gastossegunobjeto.getIdgastosegunobjeto() + "-" + gastossegunobjeto.getGastosegunobjeto().trim());
 
-
                }
 
-
            } else {
 
-
                Mensajeria.Mensaje("No se han creado los grupos");
 
-
            }
 
-
        } catch (Exception ex) {
 
-
            Mensajeria.MensajeError(ex, "CargarComboGrupo)");
 
-
        }
 
-
    }
 
-
 
-
    private boolean CargarComboGrupoGastoSegunObjeto() {
 
-
        try {
 
-
            jXComboBoxGrupoGastos.removeAllItems();
 
-
            if (grupogastossegunobjetoController1.Listar()) {
 
-
                jXComboBoxGrupoGastos.removeAllItems();
 
-
                for (Grupogastossegunobjeto g : grupogastossegunobjetoController1.getGrupogastossegunobjetolist()) {
 
-
                    jXComboBoxGrupoGastos.addItem(g.getIdgrupogastosegunobjeto() + " - " + g.getGrupogastosegunobjeto());
 
-
                }
 
-
                return true;
 
-
            } else {
 
-
                Mensajeria.Mensaje("Debe crear primero el grupo de gastos segun objeto  para crear gastos segun objeto");
 
-
            }
 
-
        } catch (Exception ex) {
 
-
            Mensajeria.MensajeError(ex, "CargarComboGrupoGastoSegunObjeto()");
 
-
 
-
        }
 
-
        return false;
 
-
    }
 
-
 
-
'''En el primer combo---
 
-
    try {
 
-
            boolean habilitar = false;
 
-
            int i = jXComboBoxGastos.getSelectedIndex();
 
-
            if (i != -1) {
 
-
                gastossegunobjeto1 = gastossegunobjetoController1.getGastossegunobjetolist().get(i);
 
-
                jTextFieldGasto.setText(gastossegunobjeto1.getGastosegunobjeto());
 
-
                habilitar = true;
 
-
                Grupogastossegunobjeto gg1 = new Grupogastossegunobjeto();
 
-
                gg1.setIdgrupogastosegunobjeto(gastossegunobjeto1.getIdgrupogastosegunobjeto());
 
-
                if (grupogastossegunobjetoController1.findByIdgrupogastosegunobjeto(gg1)) {
 
-
                    for (Grupogastossegunobjeto grupogastossegunobjeto2 : grupogastossegunobjetoController1.getGrupogastossegunobjetolist()) {
 
-
                        jXComboBoxGrupoGastos.setSelectedItem(grupogastossegunobjeto2.getIdgrupogastosegunobjeto() + " - " + grupogastossegunobjeto2.getGrupogastosegunobjeto());
 
-
                    }
 
-
                } else {
 
-
                    Mensajeria.Mensaje("No existe un grupo de gastos con el codigo " + gg1.getIdgrupogastosegunobjeto());
 
-
                }
 
-
 
-
            }
 
-
     
 
-
        } catch (Exception ex) {
 
-
            Mensajeria.MensajeError(ex, "Combo");
 
-
        }
 
-
 
-
''' Boton Guardar'''
 
-
int i = jXComboBoxGrupoGastos.getSelectedIndex();
 
-
''Importante llamar nuevamente el metodo listar del segundo combo''
 
-
            grupogastossegunobjetoController1.Listar();
 
-
            if (i != -1) {
 
-
                grupogastossegunobjeto1 = grupogastossegunobjetoController1.getGrupogastossegunobjetolist().get(i);
 
-
 
-
            } else {
 
-
                Mensajeria.Mensaje("No se ha seleccionado ningun grupo");
 
-
                return;
 
-
            }
 
-
 
-
            gastossegunobjeto1.setGastosegunobjeto(jTextFieldGasto.getText());
 
-
            gastossegunobjeto1.setIdgrupogastosegunobjeto(grupogastossegunobjeto1.getIdgrupogastosegunobjeto());
 
-
 
-
            gastossegunobjeto1.setUsername(SesionLocal.getUsername());
 
-
            gastossegunobjeto1.setFechausername(SesionLocal.getFechausername());
 
-
            if (gastossegunobjetoController1.Editar(gastossegunobjeto1)) {
 
-
                Mensajeria.Mensaje("Se actualizo el registro");
 
-
                CargarComboGastos();
 
-
            } else {
 
-
                Mensajeria.Mensaje("No se actualizo");
 
-
            }
 
== jCheckBox ==
== jCheckBox ==
Line 429: Line 16:
[[File:Check2.png]]
[[File:Check2.png]]
 +
 +
== StringTokenizer ==
 +
Se utiliza para descomponer una cadena en tokens
 +
String linea = "panama,cuba,españa";
 +
                String pais;
 +
                StringTokenizer elementos;
 +
                elementos = new StringTokenizer(linea, ",");
 +
                  while (elementos.hasMoreTokens()) {
 +
                  pais = elementos.nextToken();
 +
                                         
 +
                    }
== Tablas JTable==
== Tablas JTable==
Line 454: Line 52:
             Mensajeria.MensajeError(ex, "Tablas()");
             Mensajeria.MensajeError(ex, "Tablas()");
         }
         }
 +
  [[File:Init.png]]
 +
 +
== Hacer JTable ordenable  por columnas ==
 +
    TableRowSorter<TableModel> ordenacion = new TableRowSorter<TableModel>(modeloHittingLocal);
 +
        jTableHittingLocal.setRowSorter(ordenacion);
 +
 +
== '''Ajustar el tamaño de columnas en un JTable''' ==
 +
 +
  TableColumn columnId = jXTable1.getColumnModel().getColumn(2);
 +
        columnId.setPreferredWidth(60);
 +
 +
== '''Eliminar Todas las filas de un JTable''' ==
-
'''Eliminar lass filas de un JTable'''
 
   if(modelo != null){
   if(modelo != null){
         while (modelo.getRowCount() > 0) {
         while (modelo.getRowCount() > 0) {
Line 462: Line 71:
   }
   }
-
'''Recorrer la Tabla'''
+
== '''Si queremos eliminar filas, basados en selección de registros''' ==
 +
Si deseamos eliminar ciertos registros de un jTable, en una de las columnas la  definimos como booleanos, de manera que aparezca una casilla de selección.
 +
En este ejemplo asumimos que la casilla de seleccion esta en la columna 0.
 +
Le pasamos al metodo el modelo y el numero de columna donde esta la casilla.
 +
En el boton eliminar
 +
            int pos;
 +
            while(true){
 +
                pos = PosicionMarcado(modeloHittingLocal,0);
 +
                if(pos != -1){
 +
                    modeloHittingLocal.removeRow(pos);
 +
                }else{
 +
                    break;
 +
                }               
 +
            }
 +
 
 +
  // El metodo que elimina los registros
 +
  // Obtenemos el valor que esta en la casilla.
 +
  private Integer PosicionMarcado(DefaultTableModel lmodelo, int columna){
 +
    try{
 +
        for(int fila= 0; fila<lmodelo.getRowCount();fila++){
 +
            if(lmodelo.getValueAt(fila,columna).equals(true)){
 +
              return fila; 
 +
            }
 +
        }
 +
    }catch(Exception ex){
 +
        Mensajeria.MensajeError(ex, "PosicionMarcado()");
 +
    }
 +
    return -1;
 +
  }
 +
 
 +
[[File:Eliminarjtable-3.png]]
 +
 
 +
 
 +
== '''Seleccionar todoso jcheckbok de un jtable''' ==
 +
 
 +
  try {
 +
            SeleccionarTodo(modeloHittingLocal, 0);
 +
        } catch (Exception ex) {
 +
            Mensajeria.MensajeError(ex, "Agregar()");
 +
        }
 +
 
 +
// metodo
 +
private void SeleccionarTodo(DefaultTableModel lmodelo, int columna) {
 +
        try {
 +
            for (int fila = 0; fila < lmodelo.getRowCount(); fila++) {
 +
                lmodelo.setValueAt(true, fila, columna);
 +
 
 +
            }
 +
        } catch (Exception ex) {
 +
            Mensajeria.MensajeError(ex, "SeleccionarTodo()");
 +
        }
 +
    }
 +
[[File:Seleccionartodojtable.png]]
 +
 
 +
== ''' Deseleccionar todas las filas en la columna con jcheckbox''' ==
 +
private void DeSeleccionarTodo(DefaultTableModel lmodelo, int columna) {
 +
        try {
 +
            for (int fila = 0; fila < lmodelo.getRowCount(); fila++) {
 +
                lmodelo.setValueAt(false, fila, columna);
 +
 
 +
            }
 +
        } catch (Exception ex) {
 +
            Mensajeria.MensajeError(ex, "SeleccionarTodo()");
 +
        }
 +
    }
 +
 
 +
== '''Recorrer la Tabla''' ==
 +
 
   int n = jTable1.getRowCount();
   int n = jTable1.getRowCount();
             if (n == 0) {
             if (n == 0) {
Line 475: Line 151:
       }
       }
-
'''Actualizar columna de la tabla'''
+
== ''' Ajustar el tamaño de las columnas automaticamente''' ==
 +
 
 +
Recorremos las columnas con un for y le indicamos el tamaño deseado.
 +
En el ejemplo recorre desde la columna 4 hasta el final y le asigna un tamaño de 60
 +
for (int i = 4; i < jTableHittingVisitante.getColumnCount(); i++) {
 +
            TableColumn column =      jTableHittingVisitante.getColumnModel().getColumn(i);
 +
            column.setPreferredWidth(60);
 +
        }
 +
 
 +
== Order columnas en el JTable ==
 +
TableRowSorter<TableModel> elQueOrdena = new TableRowSorter<TableModel> (modeloHittingLocal);
 +
 
 +
jTableHittingLocal.setRowSorter(elQueOrdena);
 +
 
 +
Referencia:
 +
  http://chuwiki.chuidiang.org/index.php?title=JTable:_Ordenar_y_filtrar_filas
 +
 
 +
== '''Actualizar columna de la tabla''' ==
 +
 
   for (int i = 0; i < n; i++) {
   for (int i = 0; i < n; i++) {
           cedula = jTable1.getValueAt(i, 0).toString();
           cedula = jTable1.getValueAt(i, 0).toString();
Line 482: Line 176:
           jTable1.setValueAt(nombre, i, 1);
           jTable1.setValueAt(nombre, i, 1);
       }
       }
-
    [[File:Init.png]]
+
----
----
Line 654: Line 348:
         this.Anio = year;
         this.Anio = year;
         int nmes = ca.get(java.util.Calendar.MONTH);
         int nmes = ca.get(java.util.Calendar.MONTH);
-
   
+
 
 +
 
 +
== '''Obtener El año de una fecha en una tabla''' ==
 +
 
 +
  Date date = rs.getDate("fecha");
 +
  SimpleDateFormat simpleDateformat=new SimpleDateFormat("yyyy");
 +
  Integer anio = Integer.parseInt(simpleDateformat.format(date));
== 6. Validar fecha seleccionada ==
== 6. Validar fecha seleccionada ==
Line 679: Line 379:
-
== 8. '''Filtrar por año''' ==
+
== Otro ejemplo de formateo de fechas ==
-
String sql = "year(fecha) = '" + year + "'";
+
SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");
-
 
+
             props.setProperty("fecha", formateador.format(new Date()));
-
            if (acuerdosController1.Query(sql)) {
+
-
                Object[] filas = new Object[5]; // Hay tres columnas en la tabla
+
-
                for (Acuerdos a : acuerdosController1.getAcuerdoslist()) {
+
-
 
+
-
                    filas[0] = a.getIdacuerdo();
+
-
                    filas[1] = a.getNumacuerdo();
+
-
 
+
-
                    Format formatter;
+
-
                    formatter = new SimpleDateFormat("dd/MM/yyyy");
+
-
                    Date fecha = a.getFecha();
+
-
                    String MyFecha = formatter.format(fecha);
+
-
                    filas[2] = MyFecha;
+
-
 
+
-
                    filas[3] = a.getDetalle();
+
-
                    modelo.addRow(filas);
+
-
 
+
-
                }
+
-
             } else {
+
-
                Mensajeria.Mensaje("No hay registros para ese año");
+
-
 
+
-
            }
+
-
 
+
-
 
+
-
== 9. Filtrar entre fechas ==
+
-
 
+
-
 
+
-
java.util.Date FechaDate = jXDatePickerFechaInicio.getDate();
+
-
            java.sql.Date FechaInicio = new java.sql.Date(FechaDate.getTime());
+
-
            if (FechaInicio == null) {
+
-
                              return;
+
-
            }
+
-
            FechaDate = jXDatePickerFechaTerminacion.getDate();
+
-
            java.sql.Date FechaTerminacion = new java.sql.Date(FechaDate.getTime());
+
-
            if (FechaTerminacion == null) {
+
-
                              return;
+
-
            }
+
-
String sql +select "fecha >= ' " + FechaInicio+”' + and fecha <= ' " +
+
-
FechaFin+”'”;
+
-
     
+
-
  if (acuerdosController1.Query(sql)) {
+
-
                Object[] filas = new Object[5]; // Hay tres columnas en la tabla
+
-
                for (Acuerdos a : acuerdosController1.getAcuerdoslist()) {
+
-
 
+
-
                    filas[0] = a.getIdacuerdo();
+
-
                    filas[1] = a.getNumacuerdo();
+
-
 
+
-
                    Format formatter;
+
-
                    formatter = new SimpleDateFormat("dd/MM/yyyy");
+
-
                    Date fecha = a.getFecha();
+
-
                    String MyFecha = formatter.format(fecha);
+
-
                    filas[2] = MyFecha;
+
-
 
+
-
                    filas[3] = a.getDetalle();
+
-
                    modelo.addRow(filas);
+
-
 
+
-
                }
+
-
            } else {
+
-
                Mensajeria.Mensaje("No hay registros para ese año");
+
-
 
+
-
            }
+
== Integrando iReport ==
== Integrando iReport ==
Line 756: Line 396:
     List<Double> ListaTotalSubGrupo = new ArrayList<Double>();
     List<Double> ListaTotalSubGrupo = new ArrayList<Double>();
     //Removemos todos los elementos
     //Removemos todos los elementos
 +
    if(ListaIdSubGrupo != null){   
     ListaIdSubGrupo.removeAll(ListaIdSubGrupo);
     ListaIdSubGrupo.removeAll(ListaIdSubGrupo);
 +
    }
     //Agregar
     //Agregar
Line 771: Line 413:
       for(String s:ListaIdSubGrupo()){
       for(String s:ListaIdSubGrupo()){
             System.out.println(" "+s);
             System.out.println(" "+s);
 +
        }
 +
== List de clases ==
 +
 +
List<MyInformeDiarioSubgrupo> listMyInformeDiariosubgrupo = new ArrayList<MyInformeDiarioSubgrupo>();
 +
 +
== Actualizar una clase dentro de la List==
 +
 +
for (int i = 0; i < listMyInformeDiariosubgrupo.size(); i++) {         
 +
if(listMyInformeDiariosubgrupo.get(i).getCodigo().equals(idsubgruporecargo)){                   
 +
listMyInformeDiariosubgrupo.get(i).setPago(listMyInformeDiariosubgrupo.get(i).getPago() + recibosdetalles.getPago());
 +
          }
 +
             
         }
         }
Line 785: Line 439:
   jFormattedTextField1 = new javax.swing.JFormattedTextField(mask);
   jFormattedTextField1 = new javax.swing.JFormattedTextField(mask);
[[File:Textoformato.png]]
[[File:Textoformato.png]]
 +
 +
 +
== Formatear Decimales ==
 +
  '''En la clase de SesionLocal'''
 +
  static DecimalFormat formateador = new DecimalFormat("###########.##");
 +
  public static DecimalFormat getFormateador() {
 +
        return formateador;
 +
    }
 +
 +
    public static void setFormateador(DecimalFormat formateador) {
 +
        SesionLocal.formateador = formateador;
 +
    }
 +
 +
'''  En las otras clases'''
 +
           
 +
jTextFieldTotalRecaudado.setText(SesionLocal.getFormateador().format(granTotal) );
== SubString ==
== SubString ==
Line 794: Line 464:
         t = texto(4,5);//devuelve 2
         t = texto(4,5);//devuelve 2
         t = texto(6,7);//devuelve 8
         t = texto(6,7);//devuelve 8
-
 
-
== Descargar Plugin ==
 
-
 
-
[http://plugins.netbeans.org/plugin/39424/?show=true Descargar Plugin]
 
-
 
-
 
== StringBuilder ==
== StringBuilder ==
Line 816: Line 480:
   '''Código'''
   '''Código'''
       private void Leer() {
       private void Leer() {
-
        try {
+
     
             Properties props = new Properties();
             Properties props = new Properties();
 +
        String myversion = "0.01";
 +
        try {
             props.load(new FileInputStream("versiones.properties"));
             props.load(new FileInputStream("versiones.properties"));
-
              System.out.println(props.getProperty("version"));
+
            myversion = props.getProperty("version");
-
         } catch (Exception ex) {
+
         } catch (IOException ex) {
-
             System.out.println(" " + ex);
+
             Mensajeria.MensajeError(ex, "Leyendo archivo propiedades()");
         }
         }
 +
        if (myversion == null) {
 +
            //el archivo no existe o no tiene la propiedad sesion
 +
            myversion = "0.0";
 +
        } else {
 +
        }
 +
   
     }
     }
     /*
     /*
Line 843: Line 515:
[[File:Propertiesfiles.png]]
[[File:Propertiesfiles.png]]
-
== Lista de Deseos ==
+
== Leer Archivo de Propiedades de un jar con ResourceBundle ==
-
1. Transacciones
+
  Definimos un objeto ResourceBundle y utilizamos el metodo getString()
 +
  para obtener las propiedades
 +
ResourceBundle rb =  ResourceBundle.getBundle("org.gemaapi.properties.configuration");
 +
    this.proyecto = rb.getString("proyecto");
 +
    this.username = rb.getString("username");
-
2. Cache
+
== Cambiar un JFrame por JInternalFrame en NetBeans ==
 +
  Si anteriormente creamos un JFrame en NetBeans y desamos cambiarlo por un JInternalFrame, el proceso es muy sencillo.
 +
1. Cambiar la definición de la clase
 +
  public class ActividadCrear extends javax.swing.JFrame {
 +
  //por
 +
  public class ActividadCrear extends javax.swing.JInternalFrame {
 +
2. Comentar o eliminar
 +
    //    public static void main(String args[]) {
 +
    //        java.awt.EventQueue.invokeLater(new Runnable() { 
 +
    //
 +
    //            public void run() {
 +
    //                try {
 +
    //                    new ActividadCrear().setVisible(true);
 +
    //                } catch (ParseException ex) {
 +
    //                   
 +
  //Logger.getLogger(ActividadCrear.class.getName()).log(Level.SEVERE, null,
 +
    ex); 
 +
  //                }
 +
  //            }
 +
  //        });
 +
  //    }
 +
 +
3. En el menu principal
 +
    3.1 Agregar un jDesktopPanel al formulario principal
 +
    3.2 Evento jMenuItem
 +
        ActividadCrear actividadCrear = new ActividadCrear();
 +
        //para centrar el JInternalFrame
 +
        Toolkit tk = Toolkit.getDefaultToolkit();
 +
        Dimension screenSize = tk.getScreenSize();
 +
        int screenHeight = screenSize.height;
 +
        int screenWidth = screenSize.width;
-
3. Ordering
+
        actividadCrear.setLocation((int) (screenWidth / 2.8), (int)
 +
        (screenHeight / 4));
 +
        actividadCrear.setVisible(true);
 +
        jDesktopPane1.add(actividadCrear);
-
== Probando el API en Groovy ==
+
[[File:jdesktoppanel1.png]]
-
Quiero agradecer a mi amigo José María Martínez García, por su captura de pantalla del API en su proyecto en groovy
+
== JXTipOfTheDay ==
-
[[File:Groovy.png]]
+
  Podemos indicar los tips para mostrar
 +
[[File:Tips.png]]
 +
 
 +
'''Definimos los objetos'''
 +
JXTipOfTheDay tipOfTheDay = new JXTipOfTheDay(loadModel());
 +
 
 +
    private static TipOfTheDayModel loadModel() {
 +
    List tips = Arrays.asList(new DefaultTip("Tip 1", "Este proceso importa
 +
    grupo, subgrupo, regimen de la base de datos de ingresos"),
 +
                new DefaultTip("Tip 2", "Este proceso consume mucho tiempo."));
 +
        DefaultTipOfTheDayModel model = new DefaultTipOfTheDayModel(tips);
 +
        return model;
 +
    }
 +
 
 +
'''Para mostrarlo usamos'''
 +
      tipOfTheDay.showDialog(this);
 +
 
 +
Referencias
 +
http://www.eclipsezone.com/eclipse/forums/t55436.html
 +
 
 +
 
 +
 
 +
== JXStatusBar ==
 +
Podemos utilizar la barra de estado.
 +
Pasos:
 +
      1. Arrastramos el componente a al diseñador
 +
      2. Creamos un JLabel para actualizar los mensajes
 +
      JLabel statusLabel = new JLabel();
 +
      3.En el init del formulario agregar
 +
        jXStatusBar1.add(statusLabel);
 +
    4. En el boton agregar
 +
        Thread queryThread = new Thread() {
 +
 
 +
            public void run() {
 +
                runQueries();
 +
            }
 +
        };
 +
        queryThread.start();
 +
    5. Crear el metodo runQueries()
 +
        private void runQueries() {
 +
        for (int i = 0; i < noQueries; i++) {
 +
            runDatabaseQuery(i);
 +
            updateProgress(i);
 +
      }
 +
      }
 +
    6. Crear el metodo para actualizar el JLabel
 +
      private void updateProgress(final int queryNo) {
 +
      SwingUtilities.invokeLater(new Runnable() {
 +
        public void run() { 
 +
        statusLabel.setText("Query: " + queryNo);
 +
        }
 +
      });
 +
    }
 +
[[File:JXStatusBar.png]]
 +
 
 +
  Fuente:
 +
  [Threading with Swing (ctd):
 +
SwingUtilities.invokeLater() | http://www.javamex.com/tutorials/threads/invokelater.shtml]

Current revision as of 16:34, 8 January 2012

Contents

"Trucos Java Swing

 Contributed By;  AVBravo

jCheckBox

No hacer binding de checkbox
File:Jcheck.png
y validar el valor
  if (jCheckBox1.isSelected()) {
               usuario1.setActivo(true);
           } else {
               usuario1.setActivo(false);
           }
  Podemos indicar si esta seleccionado por defecto

File:Check2.png

StringTokenizer

Se utiliza para descomponer una cadena en tokens
String linea = "panama,cuba,españa";
               String pais;
               StringTokenizer elementos;
               elementos = new StringTokenizer(linea, ",");
                 while (elementos.hasMoreTokens()) {
                  pais = elementos.nextToken();
                                         
                   }

Tablas JTable

  Arrastrar un JTable o JXTable a un formulario
  Ajustamos el diseno
  File:Jtable.png

Arrastramos el beans y el controller.

 Definimos variables
 DefaultTableModel modelo;
   int fila = -1;

Ahora en el init

  modelo = (DefaultTableModel) jXTable1.getModel();
       try {
           if (usuariosController1.Listar()) {
               Object[] columna = new Object[3]; // Hay tres columnas en la tabla
               for (Usuarios u : usuariosController1.getUsuarioslist()) {
                   columna[0] = u.getCedula();
                   columna[1] = u.getNombre();
                   modelo.addRow(columna);
               }
           }
       } catch (Exception ex) {
           Mensajeria.MensajeError(ex, "Tablas()");
       }
  File:Init.png

Hacer JTable ordenable por columnas

   TableRowSorter<TableModel> ordenacion = new TableRowSorter<TableModel>(modeloHittingLocal);
       jTableHittingLocal.setRowSorter(ordenacion);

Ajustar el tamaño de columnas en un JTable

 TableColumn columnId = jXTable1.getColumnModel().getColumn(2);
       columnId.setPreferredWidth(60);

Eliminar Todas las filas de un JTable

  if(modelo != null){
        while (modelo.getRowCount() > 0) {
                   modelo.removeRow(0);
               }
  }

Si queremos eliminar filas, basados en selección de registros

Si deseamos eliminar ciertos registros de un jTable, en una de las columnas la  definimos como booleanos, de manera que aparezca una casilla de selección.
En este ejemplo asumimos que la casilla de seleccion esta en la columna 0.
Le pasamos al metodo el modelo y el numero de columna donde esta la casilla.
En el boton eliminar
           int pos;
           while(true){
               pos = PosicionMarcado(modeloHittingLocal,0);
               if(pos != -1){
                   modeloHittingLocal.removeRow(pos);
               }else{
                   break;
               }                
           }
 // El metodo que elimina los registros
 // Obtenemos el valor que esta en la casilla.
 private Integer PosicionMarcado(DefaultTableModel lmodelo, int columna){
   try{
       for(int fila= 0; fila<lmodelo.getRowCount();fila++){
           if(lmodelo.getValueAt(fila,columna).equals(true)){
             return fila;  
           }
       }
   }catch(Exception ex){
       Mensajeria.MensajeError(ex, "PosicionMarcado()");
   }
   return -1;
 }

File:Eliminarjtable-3.png


Seleccionar todoso jcheckbok de un jtable

  try {
           SeleccionarTodo(modeloHittingLocal, 0);
       } catch (Exception ex) {
           Mensajeria.MensajeError(ex, "Agregar()");
       }
// metodo
private void SeleccionarTodo(DefaultTableModel lmodelo, int columna) {
       try {
           for (int fila = 0; fila < lmodelo.getRowCount(); fila++) {
               lmodelo.setValueAt(true, fila, columna);
           }
       } catch (Exception ex) {
           Mensajeria.MensajeError(ex, "SeleccionarTodo()");
       }
   }

File:Seleccionartodojtable.png

Deseleccionar todas las filas en la columna con jcheckbox

private void DeSeleccionarTodo(DefaultTableModel lmodelo, int columna) {
       try {
           for (int fila = 0; fila < lmodelo.getRowCount(); fila++) {
               lmodelo.setValueAt(false, fila, columna);
           }
       } catch (Exception ex) {
           Mensajeria.MensajeError(ex, "SeleccionarTodo()");
       }
   }

Recorrer la Tabla

 int n = jTable1.getRowCount();
           if (n == 0) {
               Mensajeria.Mensaje("No existe ninguna fila en la tabla");
               return;
           }                     
           String cedula;
           String nombre;      
     for (int i = 0; i < n; i++) {
         cedula = jTable1.getValueAt(i, 0).toString();
         nombre = jTable1.getValueAt(i, 1).toString();
     }

Ajustar el tamaño de las columnas automaticamente

Recorremos las columnas con un for y le indicamos el tamaño deseado.
En el ejemplo recorre desde la columna 4 hasta el final y le asigna un tamaño de 60
for (int i = 4; i < jTableHittingVisitante.getColumnCount(); i++) {
           TableColumn column =      jTableHittingVisitante.getColumnModel().getColumn(i);
           column.setPreferredWidth(60);
       }

Order columnas en el JTable

TableRowSorter<TableModel> elQueOrdena = new TableRowSorter<TableModel> (modeloHittingLocal);
jTableHittingLocal.setRowSorter(elQueOrdena);
Referencia:
 http://chuwiki.chuidiang.org/index.php?title=JTable:_Ordenar_y_filtrar_filas

Actualizar columna de la tabla

 for (int i = 0; i < n; i++) {
         cedula = jTable1.getValueAt(i, 0).toString();
         nombre = jTable1.getValueAt(i, 1).toString();
         nombre="Mr " +nombre;
         jTable1.setValueAt(nombre, i, 1);
     }


Eventos a nivel de fila y agregar un menu en JTable

1. Definimos los objetos

JPopupMenu popupMenu = new JPopupMenu("Menu");
   JMenuItem menu1= new JMenuItem("Opcion 1");
   JSeparator separator0 = new javax.swing.JSeparator();
   JMenuItem menuCerrar = new JMenuItem("Cerrar");
   int fila;

2. En el evento init

 TableColumn column = jTable1.getColumnModel().getColumn(0);
       column.setPreferredWidth(30);
       column.setCellEditor(new DefaultCellEditor(comboRumboLatitud));
       comboRumboLatitud.addActionListener(new java.awt.event.ActionListener()      
       {
           public void actionPerformed(java.awt.event.ActionEvent evt) {
               ComboAction(evt);
           }
       });       
        /*
        * Action del menu
        */
        menu1.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent evt) {
               jMenuItem1ActionPerformed(evt);
           }
       });
       menuCerrar.addActionListener(new java.awt.event.ActionListener() {
           public void actionPerformed(java.awt.event.ActionEvent evt) {
            //   jMenuItemCerrarctionPerformed(evt);
           }
       });
         popupMenu.add(menu1);
         popupMenu.add(separator0);
         popupMenu.add(menuCerrar);
         TableColumn columnPopup = jTable1.getColumnModel().getColumn(1);
           this.jTable1.addMouseListener(new MouseAdapter() {
               public void mouseClicked(MouseEvent e) {
                   if (SwingUtilities.isRightMouseButton(e)) {
                       popupMenu.show(jTable1, e.getX(), e.getY());
                   }
                   fila = jTable1.rowAtPoint(e.getPoint());
                   int columna = jTable1.columnAtPoint(e.getPoint());
                   if ((fila > -1) && (columna > -1)) {
                       String valorColumna =      
                        String.valueOf(jTable1.getValueAt(fila, 1));                
                   }
               }
           });
  //Creamos los eventos
   private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
       try {      
           String valor = String.valueOf(jTable1.getValueAt(fila, 1));
         JOptionPane.showMessageDialog(this, valor);
       } catch (Exception ex) {           
       }
   }
  File:Menu1.png
  File:Menu2.png

Eventos de una Columna de un JTable

1. Definir un objeto

 JTextField fieldGrados;
 int filas;

2. En el init del formulario

 fieldGrados = new JTextField();
       fieldGrados.addActionListener(new java.awt.event.ActionListener() {           
          public void actionPerformed(java.awt.event.ActionEvent evt) {
               jTextFieldGradosActionPerformed(evt);
           }
       });
  TableColumn  column = jTable1.getColumnModel().getColumn(3);
       column.setCellEditor(new DefaultCellEditor(fieldGrados));
       column.setPreferredWidth(80);

3. Crear el método

   private void jTextFieldGradosActionPerformed(java.awt.event.ActionEvent evt)    
   {       
       try {           
           String tmp = this.fieldGrados.getText();
           if (tmp == null || tmp.equals("")) {              
               return;
           }           
           fila = jTable1.getSelectedRow();
           if (fila == -1) {
               JOptionPane.showMessageDialog(this, "No se selecciono ninguna 
                fila", "Mensaje", JOptionPane.WARNING_MESSAGE);
               return;
           }            
           Procesar();            
       } catch (Exception ex) {
          
       }        
   }

4. Crear el método procesar

 private void Procesar() {
       try {
         if (fila == -1) {
          JOptionPane.showMessageDialog(this, "No se selecciono ninguna fila", 
          "Mensaje", JOptionPane.WARNING_MESSAGE);
            return;
          }
           String Numero = String.valueOf(jTable1.getValueAt(fila, 0));
           if (Numero == null || Numero.equals("")) {
               Mensajeria.Mensaje("Ingrese el numero");
               return;
           }          
          Integer newVal = Integer.parseInt(Numero) * 2;                                                     
          jTable1.setValueAt(newVal, fila, 1);           
       } catch (Exception ex) {
           Mensajeria.MensajeError(ex, "Procesar()");
       }
   }

Agregar un Combo a un JTable

1.Definir el objeto JComboBox comboRumboLatitud; int filas;

2. En el init del formulario

 comboRumboLatitud = new JComboBox();
       comboRumboLatitud.addItem("NE");
       comboRumboLatitud.addItem("NW");
       comboRumboLatitud.addItem("SE");
       comboRumboLatitud.addItem("SW");
       comboRumboLatitud.setSelectedItem("NE");
 TableColumn column = jTable1.getColumnModel().getColumn(0);
       column.setPreferredWidth(30);
       column.setCellEditor(new DefaultCellEditor(comboRumboLatitud));
       comboRumboLatitud.addActionListener(new java.awt.event.ActionListener() {
           
           public void actionPerformed(java.awt.event.ActionEvent evt) {
               ComboAction(evt);
           }
       });

3. Crear el método

  private void ComboAction(java.awt.event.ActionEvent evt) {
       try {
           filas = jTable1.getSelectedRow();
           if (filas == -1) {
               JOptionPane.showMessageDialog(this, "No se selecciono ninguna fila", "Mensaje", JOptionPane.WARNING_MESSAGE);
               return;
           }
           String sel = comboRumboLatitud.getSelectedItem().toString();
           JOptionPane.showMessageDialog(this, sel);
       } catch (Exception ex) {
       }
   }

File:Combotabla.png

Manejo de Fechas

File:Datepicker.png 0. Agregar el JDatePicker al formulario

1. Crear una instancia del calendario

    java.util.Calendar ca = java.util.Calendar.getInstance();

2. Obtener la fecha actual

       java.sql.Date mydate = new java.sql.Date(ca.getTimeInMillis());

3. Asignarla a jXDatePicker

       jXDatePickerFechaNacimiento.setDate(mydate);

4. Establecer el formato para la fecha

       jXDatePickerFechaNacimiento.setFormats(new SimpleDateFormat("dd/MM/yyyy"));

5. Obtener el año mes y dia

       int year = ca.get(java.util.Calendar.YEAR);
       this.Anio = year;
       int nmes = ca.get(java.util.Calendar.MONTH);


Obtener El año de una fecha en una tabla

 Date date = rs.getDate("fecha");
 SimpleDateFormat simpleDateformat=new SimpleDateFormat("yyyy");
 Integer anio = Integer.parseInt(simpleDateformat.format(date));

6. Validar fecha seleccionada

     java.util.Date Fecha = jXDatePickerFechaNacimiento.getDate();
           java.sql.Date fechaNacimiento = new java.sql.Date(Fecha.getTime());
           if (fechaNacimiento == null) {
             Mensajeria.Mensaje("Seleccione la fecha de nacimiento");
               jXDatePickerFechaNacimiento.requestFocus();
               return;
           }
           empleado1.setFechanacimiento(fechaNacimiento);


7. Formatear la fecha para mostrarla en un jTable

                for (Acuerdos a : acuerdosController1.getAcuerdoslist()) {
              Format formatter;
               formatter = new SimpleDateFormat("dd/MM/yyyy");
               Date fecha = a.getFecha();
               String MyFecha = formatter.format(fecha);
                filas[2] = MyFecha;

}


Otro ejemplo de formateo de fechas

SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy");

           props.setProperty("fecha", formateador.format(new Date()));

Integrando iReport

Para integrar iReport , debemos realizar los siguientes pasos

1. Descargar el plugin para NetBeans desde 

http://jasperforge.org/project/ireport

1.1 Instalamos el plugin


Manipulando List<>

   //Definimos los List
   List<String> ListaIdSubGrupo = new ArrayList<String>();
   List<Double> ListaTotalSubGrupo = new ArrayList<Double>();
   //Removemos todos los elementos
   if(ListaIdSubGrupo != null){    
    ListaIdSubGrupo.removeAll(ListaIdSubGrupo);
   }
    //Agregar
         ListaIdSubGrupo.add("hola");
         ListaIdSubGrupo.add("adios");
         ListaIdSubGrupo.add("nada");
     //Remover un elemento
        ListaIdSubGrupo.remove("adios");
     //Recorrer la lista
       for (int i = 0; i < ListaIdSubGrupo().size(); i++) {            
               System.out.println(" "+ ListaIdSubGrupo.get(i);
        }
     //Otra forma de recorrer la lista
      for(String s:ListaIdSubGrupo()){
            System.out.println(" "+s);
       }

List de clases

List<MyInformeDiarioSubgrupo> listMyInformeDiariosubgrupo = new ArrayList<MyInformeDiarioSubgrupo>();

Actualizar una clase dentro de la List

for (int i = 0; i < listMyInformeDiariosubgrupo.size(); i++) {          
if(listMyInformeDiariosubgrupo.get(i).getCodigo().equals(idsubgruporecargo)){                    
listMyInformeDiariosubgrupo.get(i).setPago(listMyInformeDiariosubgrupo.get(i).getPago() + recibosdetalles.getPago());
          }
             
       }

Campos Formateados

 Arrastramos de la paleta un jFormattedTextField
 y luego damos clic derecho y seleccionamos Personalizar Codigo.
 Agregamos
  MaskFormatter  mask = null;   
  try{
     mask = new MaskFormatter("###.#.#.##.##.##.##");
  }catch(Exception ex){
  }
  //cambiamos a codigo personalizado para editar y colocamos el mask
 jFormattedTextField1 = new javax.swing.JFormattedTextField(mask);

File:Textoformato.png


Formatear Decimales

  En la clase de SesionLocal
 static DecimalFormat formateador = new DecimalFormat("###########.##");
 public static DecimalFormat getFormateador() {
       return formateador;
   }
   public static void setFormateador(DecimalFormat formateador) {
       SesionLocal.formateador = formateador;
   }

En las otras clases

jTextFieldTotalRecaudado.setText(SesionLocal.getFormateador().format(granTotal) );

SubString

 Devuelve una cadena
 substring(indice_inicial, indice_final -1)
 Ejemplo:
 String texto="561.2.8.";
 String t = texto(0,3) // devuelve 561
        t = texto(4,5);//devuelve 2
        t = texto(6,7);//devuelve 8

StringBuilder

  //definir
 StringBuilder sb = new StringBuilder("");
//agregar
  sb.append("\nHola");
//eliminar
 sb.delete(0, sb.length());


Archivo de Propiedades

  Podemos utilizar archivos de propiedades, para ello lo agregamos en la sección de archivos del proyecto.

File:Rutaarchivopropiedades.png

  Código
     private void Leer() {
     
           Properties props = new Properties();
       String myversion = "0.01";
       try {
           props.load(new FileInputStream("versiones.properties"));
           myversion = props.getProperty("version");
       } catch (IOException ex) {
           Mensajeria.MensajeError(ex, "Leyendo archivo propiedades()");
       }
       if (myversion == null) {
           //el archivo no existe o no tiene la propiedad sesion
           myversion = "0.0";
       } else {
       }
    
   }
   /*
    * 
    */
   private void EscribirActualizar() {
       try {
           Properties props = new Properties();
           props.setProperty("version", "0.34");
           props.store(new FileOutputStream("versiones.properties",false),"");
          
           System.out.println(" grabado o actualizado....");
       } catch (Exception ex) {
           System.out.println(" " + ex);
       }
   }
 Cuando generamos el jar del proyecto, tambien tenemos que copiar el archivo de propiedades.

File:Propertiesfiles.png

Leer Archivo de Propiedades de un jar con ResourceBundle

  Definimos un objeto ResourceBundle y utilizamos el metodo getString()
  para obtener las propiedades
ResourceBundle rb =  ResourceBundle.getBundle("org.gemaapi.properties.configuration");
   this.proyecto = rb.getString("proyecto");
   this.username = rb.getString("username");

Cambiar un JFrame por JInternalFrame en NetBeans

 Si anteriormente creamos un JFrame en NetBeans y desamos cambiarlo por un JInternalFrame, el proceso es muy sencillo.
1. Cambiar la definición de la clase
  public class ActividadCrear extends javax.swing.JFrame {
  //por
  public class ActividadCrear extends javax.swing.JInternalFrame {
2. Comentar o eliminar
   //    public static void main(String args[]) {
   //        java.awt.EventQueue.invokeLater(new Runnable() {   
   //
   //            public void run() {
   //                try {
   //                    new ActividadCrear().setVisible(true);
   //                } catch (ParseException ex) {
   //                    
  //Logger.getLogger(ActividadCrear.class.getName()).log(Level.SEVERE, null, 
    ex);  
  //                }
  //            }
  //        });
  //    }

3. En el menu principal
    3.1 Agregar un jDesktopPanel al formulario principal
    3.2 Evento jMenuItem
       ActividadCrear actividadCrear = new ActividadCrear();
       //para centrar el JInternalFrame
       Toolkit tk = Toolkit.getDefaultToolkit();
       Dimension screenSize = tk.getScreenSize();
       int screenHeight = screenSize.height;
       int screenWidth = screenSize.width;
       actividadCrear.setLocation((int) (screenWidth / 2.8), (int) 
       (screenHeight / 4));
       actividadCrear.setVisible(true);
       jDesktopPane1.add(actividadCrear);

File:jdesktoppanel1.png


JXTipOfTheDay

Podemos indicar los tips para mostrar

File:Tips.png

Definimos los objetos
JXTipOfTheDay tipOfTheDay = new JXTipOfTheDay(loadModel());
   private static TipOfTheDayModel loadModel() {
   List tips = Arrays.asList(new DefaultTip("Tip 1", "Este proceso importa 
    grupo, subgrupo, regimen de la base de datos de ingresos"),
               new DefaultTip("Tip 2", "Este proceso consume mucho tiempo."));
       DefaultTipOfTheDayModel model = new DefaultTipOfTheDayModel(tips);
       return model;
   }
Para mostrarlo usamos
     tipOfTheDay.showDialog(this);
Referencias
http://www.eclipsezone.com/eclipse/forums/t55436.html


JXStatusBar

Podemos utilizar la barra de estado.
Pasos:
     1. Arrastramos el componente a al diseñador
     2. Creamos un JLabel para actualizar los mensajes
      JLabel statusLabel = new JLabel();
     3.En el init del formulario agregar
       jXStatusBar1.add(statusLabel);
    4. En el boton agregar
        Thread queryThread = new Thread() {
           public void run() {
               runQueries();
           }
       };
       queryThread.start();
    5. Crear el metodo runQueries()
        private void runQueries() {
        for (int i = 0; i < noQueries; i++) {
            runDatabaseQuery(i);
           updateProgress(i);
      }
     }
    6. Crear el metodo para actualizar el JLabel
      private void updateProgress(final int queryNo) {
      SwingUtilities.invokeLater(new Runnable() {
       public void run() {   
        statusLabel.setText("Query: " + queryNo);
       }
      });
    }
File:JXStatusBar.png
 Fuente:
  [Threading with Swing (ctd):

SwingUtilities.invokeLater() | http://www.javamex.com/tutorials/threads/invokelater.shtml]

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo