TaT AvbravoTipsJavaSwing

(Difference between revisions)
(Descargar Plugin)
Line 1: Line 1:
==="Trucos Java Swing===
==="Trucos Java Swing===
   Contributed By; [[Aristides Villarreal Bravo  | AVBravo]]
   Contributed By; [[Aristides Villarreal Bravo  | AVBravo]]
-
 
-
 
-
 
-
 
-
 
-
 
-
== 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 ==

Revision as of 20:49, 26 October 2011

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

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()");
       }

Eliminar lass filas de un JTable

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

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();
     }

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);
     }
   File:Init.png

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);
    

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;

}


8. Filtrar por año

String sql = "year(fecha) = '" + year + "'";
           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

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
    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);
       }

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

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() {
       try {
           Properties props = new Properties();
           props.load(new FileInputStream("versiones.properties"));
             System.out.println(props.getProperty("version"));
       } catch (Exception ex) {
           System.out.println(" " + ex);
       }
   }
   /*
    * 
    */
   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

Lista de Deseos

1. Transacciones

2. Cache

3. Ordering

Probando el API en Groovy

Quiero agradecer a mi amigo José María Martínez García, por su captura de pantalla del API en su proyecto en groovy File:Groovy.png

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