elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Rellenar Jtable y actualizarla con un timer.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Rellenar Jtable y actualizarla con un timer.  (Leído 3,956 veces)
viruzexe

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Rellenar Jtable y actualizarla con un timer.
« en: 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
  1. public class Uno extends JFrame implements ActionListener{
  2.  
  3.    JScrollPane scroll;
  4.    modelo model;
  5.    JTable tabla;
  6.    final String[] combstatus = { "Factura Firmada", "Faltante", "Factura sin firma", "Contra recibo","Cheque sin fondos" };
  7.    final String[] combsuc = { "León", "Irapuato", "Celaya", "Queretaro" };
  8.    final String[] combresp = { "José Manuel Gomez Garza", "María Esperanza Tavarez", "Ubaldo de Jesús Robledo Muñoz", "Juan Martin Palacios Manrique" };
  9.    boolean valor=false;
  10.    final String[] combfil1 = { "Clave Clie", "Nombre Clie", "Tipo Doc",  "Estado", "Sucursal", "Responsable" };
  11.    final String[] combfil2 = { "Clave Clie", "Nombre Clie", "Tipo Doc",  "Estado", "Sucursal", "Responsable" };
  12.    final String[] combfil3 = { "Clave Clie", "Nombre Clie", "Tipo Doc",  "Estado", "Sucursal", "Responsable" };
  13.    JComboBox combofil1 = new JComboBox(combfil1);
  14.    JComboBox combofil2 = new JComboBox(combfil2);
  15.    JComboBox combofil3 = new JComboBox(combfil3);
  16.    JTextField filtro1 = null;
  17.    JTextField filtro2 = null;
  18.    JTextField filtro3 = null;
  19.    JPanel panelfil;
  20.    JButton guardar;
  21.    JButton refrescar;
  22.    JButton filtrar;
  23.    JLabel etiqueta1;
  24.    int rowtabla;
  25.    int coltabla;
  26.    TableRowSorter<modelo> sorter;
  27.    String sqlcon="SELECT V.CVE_CLIE, V.NOMBRE, V.DESCR as ID_MOV,V.REFER, CONVERT(CHAR(10), M.FECHAELAB,101) AS FECHAELAB,\n" +
  28.                        "CAST(CONVERT(VARCHAR, CAST((M.IMPORTE * M.SIGNO)  + (ISNULL(V.SALDO, 0.00))  AS MONEY),1) AS VARCHAR) AS SALDO   \n" +
  29.                        "FROM PRUEBADOS V LEFT JOIN Interfaz.dbo.CUEN_M03 M ON V.REFER = M.REFER AND V.CVE_CLIE = M.CVE_CLIE \n" +
  30.                        "WHERE ((M.IMPORTE * M.SIGNO) + (ISNULL(V.SALDO, 0.00))) > 1 OR ((M.IMPORTE * M.SIGNO)+ (ISNULL(V.SALDO, 0.00))) < -1  ";
  31.    DefaultCellEditor calen;
  32.  
  33.    public Uno(){
  34.        super ("Cuentas por pagar");
  35.        model = new modelo();
  36.        tabla = new JTable(model);
  37.        tabla.setPreferredScrollableViewportSize(new Dimension(500,70));
  38.        rowtabla=tabla.getRowCount();
  39.        coltabla=tabla.getColumnCount();
  40.        panelfil = new JPanel();
  41.        filtro1  = new JTextField(15);
  42.        filtro2  = new JTextField(15);
  43.        filtro3  = new JTextField(15);
  44.        etiqueta1 = new JLabel();
  45.        scroll = new JScrollPane(tabla);
  46.        tabla.setAutoCreateRowSorter(true);
  47.        tcr.setHorizontalAlignment(SwingConstants.RIGHT);
  48.        tabla.getColumnModel().getColumn(5).setCellRenderer(tcr);
  49.        sorter = new TableRowSorter<modelo>(model);
  50.        tabla.setRowSorter(sorter);
  51.            //tabla.updateUI();
  52.        JComboBox combostatus = new JComboBox(combstatus);
  53.        DefaultCellEditor dcestatus=new DefaultCellEditor(combostatus);
  54.        tabla.getColumnModel().getColumn(6).setCellEditor(dcestatus);
  55.        this.getContentPane().add(scroll);
  56.   //sucursal    
  57.        JComboBox combosuc = new JComboBox(combsuc);
  58.        DefaultCellEditor dcesuc = new DefaultCellEditor(combosuc);
  59.        tabla.getColumnModel().getColumn(9).setCellEditor(dcesuc);
  60.        this.getContentPane().add(scroll);
  61.   //responsable
  62.        JComboBox comboresp = new JComboBox(combresp);
  63.        DefaultCellEditor dceresp = new DefaultCellEditor(comboresp);
  64.        tabla.getColumnModel().getColumn(10).setCellEditor(dceresp);
  65.        this.getContentPane().add(scroll);
  66. tabla.getColumnModel().getColumn(0).setPreferredWidth(40);
  67.        tabla.getColumnModel().getColumn(1).setPreferredWidth(250);
  68.        tabla.getColumnModel().getColumn(2).setPreferredWidth(40);
  69.        tabla.getColumnModel().getColumn(3).setPreferredWidth(45);
  70.        tabla.getColumnModel().getColumn(4).setPreferredWidth(55);
  71.        tabla.getColumnModel().getColumn(5).setPreferredWidth(70);
  72.        tabla.getColumnModel().getColumn(6).setPreferredWidth(80);
  73.        tabla.getColumnModel().getColumn(7).setPreferredWidth(180);
  74.        tabla.getColumnModel().getColumn(8).setPreferredWidth(80);
  75.        tabla.getColumnModel().getColumn(9).setPreferredWidth(55);
  76.        tabla.getColumnModel().getColumn(10).setPreferredWidth(180);
  77.        tabla.getColumnModel().getColumn(11).setPreferredWidth(5);
  78. tabla.setRowHeight(15);        
  79.        guardar = new javax.swing.JButton("Guardar");
  80.        guardar.addActionListener(new java.awt.event.ActionListener() {
  81.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  82.                guardarActionPerformed(evt);
  83.                }
  84.            });
  85.  
  86.        tabla.addMouseListener(new MouseAdapter() {  
  87.             public void mouseClicked(MouseEvent e) {
  88.                 celdaclick(e);
  89.  
  90.            }
  91.        });
  92.        filtrar = new javax.swing.JButton("Filtrar");
  93.        filtrar.addActionListener(new java.awt.event.ActionListener() {
  94.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  95.               filtrarActionPerformed(evt);
  96.            }
  97.        });
  98.        refrescar = new javax.swing.JButton("Refrescar");
  99.        refrescar.addActionListener(new java.awt.event.ActionListener() {
  100.            public void actionPerformed(java.awt.event.ActionEvent evt) {
  101.               refrescarActionPerformed(evt);
  102.            }
  103.        });
  104.        getContentPane().add(panelfil, BorderLayout.CENTER);
  105.        tcr.setHorizontalAlignment(SwingConstants.RIGHT);
  106.        addWindowListener(new WindowAdapter(){
  107.            public void windowClosing (WindowEvent e) {
  108.                  // setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  109.  
  110.                    System.exit(0);
  111.            }
  112.        });
  113.  
  114. /* aqui va el codigo generado por Netbeans para el acomodo del swing en el Jframe*/
  115. }
  116.  
  117. class modelo extends AbstractTableModel{
  118.  
  119.        final Object[][] datos = getfilas(sqlcon);
  120.        final String [] columnas = getcolumnas();
  121.        public int getColumnCount() {
  122.             return columnas.length;
  123.        }
  124.        //retormanos el numero de elementos
  125.        //del array de datos
  126.        public int getRowCount() {
  127.            return datos.length;
  128.        }
  129.        //retornamos el elemento indicado
  130.        public String getColumnName(int col) {
  131.            return columnas[col];
  132.        }
  133.        //y lo mismo para las celdas
  134.        public Object getValueAt(int row, int col) {
  135.            return datos[row][col];
  136.        }
  137.        /*
  138.         * Este metodo sirve para determinar el editor predeterminado
  139.         * para cada columna de celdas
  140.         */
  141.  
  142.          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};
  143. public Class getColumnClass(int c) {
  144.  
  145.     return columns[c];
  146.  }
  147.            public boolean isCellEditable(int row, int col) {
  148.            System.out.println("columna"+col + "Fila" + row);
  149.            Boolean set =new Boolean("false");
  150.            boolean isEditable = true;
  151. isEditable = false;
  152.                    if (col >= 0 && col <= 11) {
  153.                        System.out.println("entro a el primer filtro 1-9");
  154.                    Object value = getValueAt(row, 11);
  155.        if (value!=Boolean.FALSE ) {
  156.  
  157.           isEditable = true;
  158.        }
  159.    } else {
  160.           isEditable=false;
  161. }
  162. return isEditable;
  163.  
  164.           }      
  165. public void setValueAt(Object value, int row, int col) {
  166.        datos[row][col] = value;
  167.        fireTableCellUpdated(row, col);
  168.        }
  169.  
  170. }
  171.  
  172.  
  173.    private String[] getcolumnas(){
  174.        String columna[]=new String[]{"Cliente", "Nombre", "Tipo Doc", "DOCTO","Fecha de E.","Saldo","Estado","Comentarios","Fecha de Cobro","Sucursal","Responsable","Revisado"};
  175.        return columna;
  176.    }
  177.    private Object[][] getfilas(String sqlcon){
  178.        Object fila[][]=getsqlcon(sqlcon);
  179.                System.out.println("esto esssssssssss get slqcon"+getsqlcon(sqlcon));
  180.               return fila;
  181.    }
  182.  
  183.   public static Object [][] getsqlcon(String squery){
  184.        Connection conexion=null;
  185.        try{
  186.            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  187.            String url= "jdbc:sqlserver://127.0.0.1:1433;databaseName=Interfaz;user=SISTEMAS;password=administrador;";
  188.            conexion= DriverManager.getConnection(url);
  189.            Statement st = conexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
  190.            ResultSet rs = st.executeQuery(squery);
  191.            Object [][] arr = sArreglo(rs);
  192.            st.close();
  193.            rs.close();
  194.            conexion.close();
  195.            return arr;
  196.  
  197.        }
  198.        catch(ClassNotFoundException ex){
  199.            JOptionPane.showMessageDialog(null,ex, "Error 1 en la conexion"+ex.getMessage(),JOptionPane.ERROR_MESSAGE);
  200.            conexion=null;
  201.        }
  202.        catch(SQLException ex){
  203.            JOptionPane.showMessageDialog(null,ex, "Error 2 en la Conexión"+ex.getMessage(),JOptionPane.ERROR_MESSAGE);
  204.            conexion=null;
  205.        }
  206.        catch(Exception ex){
  207.            JOptionPane.showMessageDialog(null, ex, "Error3 en la Conexión con la BD "+ex.getMessage(), JOptionPane.ERROR_MESSAGE);
  208.            conexion=null ;
  209.        }
  210.       return null;
  211.  }
  212.   private static Object [][] sArreglo(ResultSet rs){
  213.    Object sfila[][]=null;
  214.    int cols = 0;
  215.    int rows = 0;
  216.    int x=0;
  217.    String mov=null;
  218.    int movi=0;
  219.    try{
  220.        rs.last();
  221.        ResultSetMetaData rsmd = rs.getMetaData();
  222.        int ncols = rsmd.getColumnCount();
  223.        int nfils = rs.getRow();
  224.        cols=ncols;
  225.        rows=nfils;
  226.        sfila = new Object[nfils][12];
  227.        int j = 0;
  228.        rs.beforeFirst();
  229.        while (rs.next()){
  230.            for (int i=0;i<ncols;i++){
  231.                sfila[j][i]=rs.getObject(i+1);
  232.                if (i==0){
  233.                    sfila[j][0]=rs.getString(i+1);
  234.                }
  235.            }
  236.           j++;
  237.       }
  238.    }
  239.        catch(NumberFormatException | SQLException ex){
  240.             System.out.print(ex.getMessage());
  241.       }
  242.    Dos mysql = new Dos();
  243.    mysql.conec(sfila);
  244.        return sfila;
  245. }
  246. JCalendar calendario;
  247. JTextField fecha;
  248. JButton confirmar;
  249. JButton cancelar;
  250. JDialog dlg;
  251. String date;
  252. String año;
  253. String mes;
  254. String dia;  
  255. JCalendar dp;
  256.  
  257.  private void celdaclick(MouseEvent e)
  258.  {
  259.         JTable target = (JTable)e.getSource();
  260.         JPanel calpan = new JPanel();
  261.         JPanel calpancal = new JPanel();
  262.         JPanel calpanbut = new JPanel();
  263.         int row = target.getSelectedRow();
  264.         int column = target.getSelectedColumn();
  265.         confirmar=new JButton("Aceptar");
  266.         cancelar=new JButton("cancelar");
  267.         int status=0;
  268.         confirmar.addActionListener(this);
  269.         cancelar.addActionListener(this);
  270.  
  271. if (column==8)
  272.       {
  273.           if (tabla.getValueAt(row,11)!=Boolean.FALSE){
  274.  
  275.  
  276.           String fechaAnt=(String) tabla.getValueAt(row, column);
  277.          // JOptionPane.showMessageDialog(null,fechaAnt);
  278.            dlg = new JDialog(this, true);
  279.  
  280.            dlg.setDefaultCloseOperation (WindowConstants.DO_NOTHING_ON_CLOSE);
  281.  
  282.  
  283.  
  284. dlg.addWindowListener(new WindowAdapter(){
  285.        public void windowClosing(WindowEvent we){
  286.          dlg.setTitle(null);
  287.          dlg.setVisible(false);
  288.    }
  289.  
  290. });
  291.            SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy");
  292.            dp = new JCalendar();
  293.            date = format1.format(dp.getDate());
  294.            calpancal.add(dp);
  295.            calpanbut.add(confirmar);
  296.            calpanbut.add(cancelar);
  297.            calpan.add(calpancal);
  298.            calpan.add(calpanbut);
  299.            dlg.getContentPane().add(calpan);
  300.            dlg.pack();
  301.            dlg.setVisible(true);
  302.            String fechaNue = dlg.getTitle();
  303.       if (fechaAnt==(null)){
  304.          if(fechaNue==null){
  305.             tabla.setValueAt(fechaNue,row,column);
  306.          }else{
  307.             tabla.setValueAt(fechaNue,row,column);
  308.          }
  309.  
  310.       }else if(fechaAnt!=null){
  311.           if (fechaNue==null){
  312.               tabla.setValueAt(fechaAnt, row, column);
  313.           }else{
  314.                   tabla.setValueAt(fechaNue, row, column);
  315.               }
  316.           }
  317.           }
  318.       }
  319.  
  320.  
  321.  }
  322.  
  323.  public void actionPerformed(ActionEvent e) {
  324.        if (e.getSource()==confirmar) {
  325.            año=Integer.toString(dp.getCalendar().get(java.util.Calendar.YEAR));
  326.            mes=Integer.toString(dp.getCalendar().get(java.util.Calendar.MONTH)+1);
  327.            dia=Integer.toString(dp.getCalendar().get(java.util.Calendar.DATE));
  328.            if (dia.length()==1){
  329.                dia="0"+dia;
  330.            }
  331.            if(mes.length()==1){
  332.                mes="0"+mes;
  333.            }
  334.            date = ""+dia+"/"+mes+"/"+año;
  335.            dlg.setTitle(date);
  336.            dlg.setVisible(false);
  337.        }
  338.        if (e.getSource()==cancelar) {
  339.            dlg.setTitle(null);
  340.            dlg.setVisible(false);
  341.        }
  342.    }
  343. /*cuando apriete el boton que genere este listener es donde queiro actualizar lka tabla, volverla a cargar*/
  344. private void refrescarActionPerformed(java.awt.event.ActionEvent evt){
  345.  
  346. }
  347.  
  348. private void guardarActionPerformed(java.awt.event.ActionEvent evt) {
  349.  
  350.     Dos insertar = new Dos();
  351.     try {
  352.        insertar.insertar(tabla, rowtabla, coltabla);
  353.        }
  354.     catch (ParseException ex) {
  355.        Logger.getLogger(Uno.class.getName()).log(Level.SEVERE, null, ex);
  356.        }
  357.    }
  358.   public void filtrarActionPerformed(ActionEvent e){
  359.       int comb1=0;
  360.       int comb2=0;
  361.       int comb3=0;
  362.  
  363.       switch (combofil1.getSelectedIndex()){
  364.           case 0:
  365.               comb1=0;
  366.               break;
  367.           case 1:
  368.               comb1=1;
  369.               break;
  370.           case 2:
  371.               comb1=2;
  372.               break;
  373.           case 3:
  374.               comb1=6;
  375.               break;
  376.           case 4:
  377.               comb1=9;
  378.               break;
  379.           case 5:
  380.               comb1=10;
  381.               break;
  382.       }
  383.       switch (combofil2.getSelectedIndex()){
  384.           case 0:
  385.               comb2=0;
  386.               break;
  387.           case 1:
  388.               comb2=1;
  389.               break;
  390.           case 2:
  391.               comb2=2;
  392.               break;
  393.           case 3:
  394.               comb2=6;
  395.               break;
  396.           case 4:
  397.               comb2=9;
  398.               break;
  399.           case 5:
  400.               comb2=10;
  401.               break;
  402.       }
  403.       switch (combofil3.getSelectedIndex()){
  404.           case 0:
  405.               comb3=0;
  406.               break;
  407.           case 1:
  408.               comb3=1;
  409.               break;
  410.           case 2:
  411.               comb3=2;
  412.               break;
  413.           case 3:
  414.               comb3=6;
  415.               break;
  416.           case 4:
  417.               comb3=9;
  418.               break;
  419.           case 5:
  420.               comb3=10;
  421.               break;
  422.       }
  423.        RowFilter<modelo, Object> multiFiltro = null;
  424.        RowFilter<modelo, Object> primerFiltro = null;
  425.        RowFilter<modelo, Object> segundoFiltro = null;
  426.        RowFilter<modelo, Object> tercerFiltro = null;
  427.        ArrayList<RowFilter<modelo,Object>> lista = new ArrayList<RowFilter<modelo,Object>>();
  428.        try{
  429.            primerFiltro = RowFilter.regexFilter("(?i)"+filtro1.getText(), comb1);
  430.            segundoFiltro=RowFilter.regexFilter("(?i)"+filtro2.getText(), comb2);
  431.            tercerFiltro=RowFilter.regexFilter("(?i)"+filtro3.getText(), comb3);
  432.            lista.add(primerFiltro);
  433.            lista.add(segundoFiltro);
  434.            lista.add(tercerFiltro);
  435.            multiFiltro = RowFilter.andFilter(lista);
  436.        }catch(java.util.regex.PatternSyntaxException ex) {
  437.            return;
  438.        }
  439.        sorter.setRowFilter(multiFiltro);
  440.   }
  441. }
  442.  
  443.  


En línea

ThinkByYourself

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Re: Rellenar Jtable y actualizarla con un timer.
« Respuesta #1 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


En línea

No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.
viruzexe

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Rellenar Jtable y actualizarla con un timer.
« Respuesta #2 en: 14 Diciembre 2013, 19:23 pm »

Gracias!
En línea

viruzexe

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Rellenar Jtable y actualizarla con un timer.
« Respuesta #3 en: 14 Diciembre 2013, 20:42 pm »

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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Rellenar campos en un WebBrowser
Programación Visual Basic
jmordenata 0 963 Último mensaje 4 Marzo 2007, 18:17 pm
por jmordenata
Crear Base de Datos, y Actualizarla on-line « 1 2 3 »
.NET (C#, VB.NET, ASP)
Skeletron 24 14,502 Último mensaje 10 Septiembre 2009, 16:55 pm
por MANULOMM
[SOLUCIONADO]Cargar JTable con Timer
Java
1mpuls0 2 4,289 Último mensaje 13 Diciembre 2009, 06:12 am
por 1mpuls0
Rellenar formularios web
Java
Tyrz 6 11,136 Último mensaje 2 Febrero 2011, 20:18 pm
por kasiko
Version de mi bios contiene una I y no puedo actualizarla
Hardware
alejandroooooooo 5 7,562 Último mensaje 16 Diciembre 2023, 14:35 pm
por bettu
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines