TaT AvbravoTipsJavaSwing

(Difference between revisions)
(Tablas JTable)
(Manipulando List)
Line 289: Line 289:
     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

Revision as of 14:03, 31 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;

}


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

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() {
     
           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


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

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