Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - viruzexe

#1
Cita de: NoBullshit en  4 Diciembre 2013, 01:16 AM
Jiji, siento no haber ni mirado tu código (no te indignes). Los problemas que tuve yo con JTable (los mismos) creo que se resolvieron con los métodos "updateUI()" y "repaint()", pero la verdad es que no lo recuerdo bien... Puedes probar


si, al final tuve que cambiar toda mi estructura, porque soy nuevo en esto, y el repaint() me funciono bien. Igual gracias :J
#2
Gracias!
#3
Java / Rellenar Jtable y actualizarla con un timer.
29 Noviembre 2013, 00:46 AM
Hey hola amigos (n.n)/  tengo un problema soy un rockie en Java, es mi primera aplicacion. y empece a hacerla desde 0 gracias al internet y algunos conocimientos de pseudocodigo.

ahora, estuve navegando por la red, buscando comprender como re-fillear o recargar la tabla para que simule una conexion en tiempo real. extraigo datos de una basede datos de SQL y tambien una de MYSQL. entonces necesito saber bien que onda. les dejo la clase donde se realiza la mayor parte del trabajo, tambien tengo otra. donde se  llena el resultset, y el main.

pueden ayudarme para poder realizar el refill??



Código (java) [Seleccionar]

public class Uno extends JFrame implements ActionListener{
   
    JScrollPane scroll;
    modelo model;
    JTable tabla;
    final String[] combstatus = { "Factura Firmada", "Faltante", "Factura sin firma", "Contra recibo","Cheque sin fondos" };
    final String[] combsuc = { "León", "Irapuato", "Celaya", "Queretaro" };
    final String[] combresp = { "José Manuel Gomez Garza", "María Esperanza Tavarez", "Ubaldo de Jesús Robledo Muñoz", "Juan Martin Palacios Manrique" };
    boolean valor=false;
    final String[] combfil1 = { "Clave Clie", "Nombre Clie", "Tipo Doc",  "Estado", "Sucursal", "Responsable" };
    final String[] combfil2 = { "Clave Clie", "Nombre Clie", "Tipo Doc",  "Estado", "Sucursal", "Responsable" };
    final String[] combfil3 = { "Clave Clie", "Nombre Clie", "Tipo Doc",  "Estado", "Sucursal", "Responsable" };
    JComboBox combofil1 = new JComboBox(combfil1);
    JComboBox combofil2 = new JComboBox(combfil2);
    JComboBox combofil3 = new JComboBox(combfil3);
    JTextField filtro1 = null;
    JTextField filtro2 = null;
    JTextField filtro3 = null;
    JPanel panelfil;
    JButton guardar;
    JButton refrescar;
    JButton filtrar;
    JLabel etiqueta1;
    int rowtabla;
    int coltabla;
    TableRowSorter<modelo> sorter;
    String sqlcon="SELECT V.CVE_CLIE, V.NOMBRE, V.DESCR as ID_MOV,V.REFER, CONVERT(CHAR(10), M.FECHAELAB,101) AS FECHAELAB,\n" +
                        "CAST(CONVERT(VARCHAR, CAST((M.IMPORTE * M.SIGNO)  + (ISNULL(V.SALDO, 0.00))  AS MONEY),1) AS VARCHAR) AS SALDO   \n" +
                        "FROM PRUEBADOS V LEFT JOIN Interfaz.dbo.CUEN_M03 M ON V.REFER = M.REFER AND V.CVE_CLIE = M.CVE_CLIE \n" +
                        "WHERE ((M.IMPORTE * M.SIGNO) + (ISNULL(V.SALDO, 0.00))) > 1 OR ((M.IMPORTE * M.SIGNO)+ (ISNULL(V.SALDO, 0.00))) < -1  ";
    DefaultCellEditor calen;
   
    public Uno(){
        super ("Cuentas por pagar");
        model = new modelo();
        tabla = new JTable(model);
        tabla.setPreferredScrollableViewportSize(new Dimension(500,70));
        rowtabla=tabla.getRowCount();
        coltabla=tabla.getColumnCount();
        panelfil = new JPanel();
        filtro1  = new JTextField(15);
        filtro2  = new JTextField(15);
        filtro3  = new JTextField(15);
        etiqueta1 = new JLabel();
        scroll = new JScrollPane(tabla);
        tabla.setAutoCreateRowSorter(true);
         DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();
        tcr.setHorizontalAlignment(SwingConstants.RIGHT);
        tabla.getColumnModel().getColumn(5).setCellRenderer(tcr);
        sorter = new TableRowSorter<modelo>(model);
        tabla.setRowSorter(sorter);
            //tabla.updateUI();
        JComboBox combostatus = new JComboBox(combstatus);
        DefaultCellEditor dcestatus=new DefaultCellEditor(combostatus);
        tabla.getColumnModel().getColumn(6).setCellEditor(dcestatus);
        this.getContentPane().add(scroll);
   //sucursal     
        JComboBox combosuc = new JComboBox(combsuc);
        DefaultCellEditor dcesuc = new DefaultCellEditor(combosuc);
        tabla.getColumnModel().getColumn(9).setCellEditor(dcesuc);
        this.getContentPane().add(scroll);
   //responsable
        JComboBox comboresp = new JComboBox(combresp);
        DefaultCellEditor dceresp = new DefaultCellEditor(comboresp);
        tabla.getColumnModel().getColumn(10).setCellEditor(dceresp);
        this.getContentPane().add(scroll);
tabla.getColumnModel().getColumn(0).setPreferredWidth(40);
        tabla.getColumnModel().getColumn(1).setPreferredWidth(250);
        tabla.getColumnModel().getColumn(2).setPreferredWidth(40);
        tabla.getColumnModel().getColumn(3).setPreferredWidth(45);
        tabla.getColumnModel().getColumn(4).setPreferredWidth(55);
        tabla.getColumnModel().getColumn(5).setPreferredWidth(70);
        tabla.getColumnModel().getColumn(6).setPreferredWidth(80);
        tabla.getColumnModel().getColumn(7).setPreferredWidth(180);
        tabla.getColumnModel().getColumn(8).setPreferredWidth(80);
        tabla.getColumnModel().getColumn(9).setPreferredWidth(55);
        tabla.getColumnModel().getColumn(10).setPreferredWidth(180);
        tabla.getColumnModel().getColumn(11).setPreferredWidth(5);
tabla.setRowHeight(15);       
        guardar = new javax.swing.JButton("Guardar");
        guardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                guardarActionPerformed(evt);
                }
            });

        tabla.addMouseListener(new MouseAdapter() { 
             public void mouseClicked(MouseEvent e) {
                 celdaclick(e);
   
            }
        });
        filtrar = new javax.swing.JButton("Filtrar");
        filtrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
               filtrarActionPerformed(evt);
            }
        });
        refrescar = new javax.swing.JButton("Refrescar");
        refrescar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
               refrescarActionPerformed(evt);
            }
        });
        getContentPane().add(panelfil, BorderLayout.CENTER);
        tcr.setHorizontalAlignment(SwingConstants.RIGHT);
        addWindowListener(new WindowAdapter(){
            public void windowClosing (WindowEvent e) {
                  // setDefaultCloseOperation(DISPOSE_ON_CLOSE);

                    System.exit(0);
            }
        });

/* aqui va el codigo generado por Netbeans para el acomodo del swing en el Jframe*/
}

class modelo extends AbstractTableModel{

        final Object[][] datos = getfilas(sqlcon);
        final String [] columnas = getcolumnas();
        public int getColumnCount() {
             return columnas.length;
        }
        //retormanos el numero de elementos
        //del array de datos
        public int getRowCount() {
            return datos.length;
        }
        //retornamos el elemento indicado
        public String getColumnName(int col) {
            return columnas[col];
        }
        //y lo mismo para las celdas
        public Object getValueAt(int row, int col) {
            return datos[row][col];
        }
        /*
        * Este metodo sirve para determinar el editor predeterminado
        * para cada columna de celdas
        */
       
          Class[] columns = new Class[]{String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, Boolean.class};
public Class getColumnClass(int c) {
 
     return columns[c];
  }
            public boolean isCellEditable(int row, int col) {
            System.out.println("columna"+col + "Fila" + row);
            Boolean set =new Boolean("false");
            boolean isEditable = true;
isEditable = false;
                    if (col >= 0 && col <= 11) {
                        System.out.println("entro a el primer filtro 1-9");
                    Object value = getValueAt(row, 11);
        if (value!=Boolean.FALSE ) {
           
           isEditable = true;
        }
    } else {
           isEditable=false;
}
return isEditable;
                   
           }     
public void setValueAt(Object value, int row, int col) {
        datos[row][col] = value;
        fireTableCellUpdated(row, col);
        }

}
   
   
    private String[] getcolumnas(){
        String columna[]=new String[]{"Cliente", "Nombre", "Tipo Doc", "DOCTO","Fecha de E.","Saldo","Estado","Comentarios","Fecha de Cobro","Sucursal","Responsable","Revisado"};
        return columna;
    }
    private Object[][] getfilas(String sqlcon){
        Object fila[][]=getsqlcon(sqlcon);
                System.out.println("esto esssssssssss get slqcon"+getsqlcon(sqlcon));
               return fila;
    }
   
   public static Object [][] getsqlcon(String squery){
        Connection conexion=null;
        try{
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            String url= "jdbc:sqlserver://127.0.0.1:1433;databaseName=Interfaz;user=SISTEMAS;password=administrador;";
            conexion= DriverManager.getConnection(url);
            Statement st = conexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
            ResultSet rs = st.executeQuery(squery);
            Object [][] arr = sArreglo(rs);
            st.close();
            rs.close();
            conexion.close();
            return arr;
                   
        }
        catch(ClassNotFoundException ex){
            JOptionPane.showMessageDialog(null,ex, "Error 1 en la conexion"+ex.getMessage(),JOptionPane.ERROR_MESSAGE);
            conexion=null;
        }
        catch(SQLException ex){
            JOptionPane.showMessageDialog(null,ex, "Error 2 en la Conexión"+ex.getMessage(),JOptionPane.ERROR_MESSAGE);
            conexion=null;
        }
        catch(Exception ex){
            JOptionPane.showMessageDialog(null, ex, "Error3 en la Conexión con la BD "+ex.getMessage(), JOptionPane.ERROR_MESSAGE);
            conexion=null ;
        }
       return null;
  }
   private static Object [][] sArreglo(ResultSet rs){
    Object sfila[][]=null;
    int cols = 0;
    int rows = 0;
    int x=0;
    String mov=null;
    int movi=0;
    try{
        rs.last();
        ResultSetMetaData rsmd = rs.getMetaData();
        int ncols = rsmd.getColumnCount();
        int nfils = rs.getRow();
        cols=ncols;
        rows=nfils;
        sfila = new Object[nfils][12];
        int j = 0;
        rs.beforeFirst();
        while (rs.next()){
            for (int i=0;i<ncols;i++){
                sfila[j][i]=rs.getObject(i+1);
                if (i==0){
                    sfila[j][0]=rs.getString(i+1);
                }
            }
           j++;
       }
    }
        catch(NumberFormatException | SQLException ex){
             System.out.print(ex.getMessage());
       }
    Dos mysql = new Dos();
    mysql.conec(sfila);
        return sfila;
}
JCalendar calendario;
JTextField fecha;
JButton confirmar;
JButton cancelar;
JDialog dlg;
String date;
String año;
String mes;
String dia; 
JCalendar dp;
 
  private void celdaclick(MouseEvent e)
  {
         JTable target = (JTable)e.getSource();
         JPanel calpan = new JPanel();
         JPanel calpancal = new JPanel();
         JPanel calpanbut = new JPanel();
         int row = target.getSelectedRow();
         int column = target.getSelectedColumn();
         confirmar=new JButton("Aceptar");
         cancelar=new JButton("cancelar");
         int status=0;
         confirmar.addActionListener(this);
         cancelar.addActionListener(this);

if (column==8)
       {
           if (tabla.getValueAt(row,11)!=Boolean.FALSE){
               
           
           String fechaAnt=(String) tabla.getValueAt(row, column);
          // JOptionPane.showMessageDialog(null,fechaAnt);
            dlg = new JDialog(this, true);
           
            dlg.setDefaultCloseOperation (WindowConstants.DO_NOTHING_ON_CLOSE);



dlg.addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent we){
          dlg.setTitle(null);
          dlg.setVisible(false);
    }

});
            SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy");
            dp = new JCalendar();
            date = format1.format(dp.getDate());
            calpancal.add(dp);
            calpanbut.add(confirmar);
            calpanbut.add(cancelar);
            calpan.add(calpancal);
            calpan.add(calpanbut);
            dlg.getContentPane().add(calpan);
            dlg.pack();
            dlg.setVisible(true);
            String fechaNue = dlg.getTitle();
       if (fechaAnt==(null)){
          if(fechaNue==null){
             tabla.setValueAt(fechaNue,row,column);
          }else{
             tabla.setValueAt(fechaNue,row,column);
          }
         
       }else if(fechaAnt!=null){
           if (fechaNue==null){
               tabla.setValueAt(fechaAnt, row, column);
           }else{
                   tabla.setValueAt(fechaNue, row, column);
               }
           }
           }
       }
           
     
  }
 
  public void actionPerformed(ActionEvent e) {
        if (e.getSource()==confirmar) {
            año=Integer.toString(dp.getCalendar().get(java.util.Calendar.YEAR));
            mes=Integer.toString(dp.getCalendar().get(java.util.Calendar.MONTH)+1);
            dia=Integer.toString(dp.getCalendar().get(java.util.Calendar.DATE));
            if (dia.length()==1){
                dia="0"+dia;
            }
            if(mes.length()==1){
                mes="0"+mes;
            }
            date = ""+dia+"/"+mes+"/"+año;
            dlg.setTitle(date);
            dlg.setVisible(false);
        }
        if (e.getSource()==cancelar) {
            dlg.setTitle(null);
            dlg.setVisible(false);
        }
    }
/*cuando apriete el boton que genere este listener es donde queiro actualizar lka tabla, volverla a cargar*/
private void refrescarActionPerformed(java.awt.event.ActionEvent evt){

}

private void guardarActionPerformed(java.awt.event.ActionEvent evt) {
   
     Dos insertar = new Dos();
     try {
        insertar.insertar(tabla, rowtabla, coltabla);
        }
     catch (ParseException ex) {
        Logger.getLogger(Uno.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
   public void filtrarActionPerformed(ActionEvent e){
       int comb1=0;
       int comb2=0;
       int comb3=0;
       
       switch (combofil1.getSelectedIndex()){
           case 0:
               comb1=0;
               break;
           case 1:
               comb1=1;
               break;
           case 2:
               comb1=2;
               break;
           case 3:
               comb1=6;
               break;
           case 4:
               comb1=9;
               break;
           case 5:
               comb1=10;
               break;
       }
       switch (combofil2.getSelectedIndex()){
           case 0:
               comb2=0;
               break;
           case 1:
               comb2=1;
               break;
           case 2:
               comb2=2;
               break;
           case 3:
               comb2=6;
               break;
           case 4:
               comb2=9;
               break;
           case 5:
               comb2=10;
               break;
       }
       switch (combofil3.getSelectedIndex()){
           case 0:
               comb3=0;
               break;
           case 1:
               comb3=1;
               break;
           case 2:
               comb3=2;
               break;
           case 3:
               comb3=6;
               break;
           case 4:
               comb3=9;
               break;
           case 5:
               comb3=10;
               break;
       }
        RowFilter<modelo, Object> multiFiltro = null;
        RowFilter<modelo, Object> primerFiltro = null;
        RowFilter<modelo, Object> segundoFiltro = null;
        RowFilter<modelo, Object> tercerFiltro = null;
        ArrayList<RowFilter<modelo,Object>> lista = new ArrayList<RowFilter<modelo,Object>>();
        try{
            primerFiltro = RowFilter.regexFilter("(?i)"+filtro1.getText(), comb1);
            segundoFiltro=RowFilter.regexFilter("(?i)"+filtro2.getText(), comb2);
            tercerFiltro=RowFilter.regexFilter("(?i)"+filtro3.getText(), comb3);
            lista.add(primerFiltro);
            lista.add(segundoFiltro);
            lista.add(tercerFiltro);
            multiFiltro = RowFilter.andFilter(lista);
        }catch(java.util.regex.PatternSyntaxException ex) {
            return;
        }
        sorter.setRowFilter(multiFiltro);
   }
}

#4
Java / Re: Refrescar JTABLE!!
29 Noviembre 2013, 00:25 AM
jajaja Gracias Zoik! pues lo probaré para checarlo, el problema son los renderer *****, pos eso no me quiero meter en esos pedos. mejor hago lo que dices, borro las filas del modelo y lo vuelvo a cargar con el resultSet.

y Mitsu, es porque era Simplemente el mismo problema, la lógica decía que no me contestarían pero Vualá! gracias a ambos por tomarse el tiempo.

: )
#5
Java / Re: Refrescar JTABLE!!
26 Noviembre 2013, 19:42 PM
Una pregunta.. me encuentro antes el mismo dilema, lograste solucionarlo con el RowCount(0)? o usaste algun updateui o algo así. Podrias giuarme? lo agradeceria