Foro de Java y C++ de Chuidiang

Este foro se mueve a Foro de Java y C++

Foro de Java y C++ de Chuidiang
Filtrar Consulta en jTable basado en ResultSet
* E-mail:
* Password:
Registrarse Presentación Miembros Imágenes
¿Has olvidado tu Password?

Lista de mensajes
Autor Mensaje
Alejo
 
Mensajes: 1
Registrado: Enero/2009
Estado: Off-line
Grupo: Nuevo usuario
 
 
  Re: Filtrar Consulta en jTable basado en ResultSet 19/Enero/2009 - 04:26

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.RowFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class RegexTable {
  public static void main(String args[]) {
    JFrame frame = new JFrame("Regexing JTable");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Object rows[][] { { "A""About"44.36 }"B""Boy"44.84 }"C""Cat"463.63 },
        "D""Day"27.14 }"E""Eat"44.57 }"F""Fail"23.15 },
        "G""Good"4.40 }"H""Hot"24.96 }"I""Ivey"5.45 },
        "J""Jack"49.54 }"K""Kids"280.00 } };
    String columns[] "Symbol""Name""Price" };
    TableModel model = new DefaultTableModel(rows, columns) {
      public Class getColumnClass(int column) {
        Class returnValue;
        if ((column >= 0&& (column < getColumnCount())) {
          returnValue = getValueAt(0, column).getClass();
        else {
          returnValue = Object.class;
        }
        return returnValue;
      }
    };

    final JTable table = new JTable(model);
    final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
    table.setRowSorter(sorter);
    JScrollPane pane = new JScrollPane(table);
    frame.add(pane, BorderLayout.CENTER);

    JPanel panel = new JPanel(new BorderLayout());
    JLabel label = new JLabel("Filter");
    panel.add(label, BorderLayout.WEST);
    final JTextField filterText = new JTextField("A");
    panel.add(filterText, BorderLayout.CENTER);
    frame.add(panel, BorderLayout.NORTH);
    JButton button = new JButton("Filter");
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        String text = filterText.getText();
        if (text.length() == 0) {
          sorter.setRowFilter(null);
        else {
          sorter.setRowFilter(RowFilter.regexFilter(text));
        }
      }
    });
    frame.add(button, BorderLayout.SOUTH);
    frame.setSize(300250);
    frame.setVisible(true);
  }

}

carlos
 
Mensajes: 1
Registrado: Diciembre/2008
Estado: Off-line
Grupo: Nuevo usuario
 
 
  Re: Filtrar Consulta en jTable basado en ResultSet 14/Diciembre/2008 - 15:18

Amigo yo estoy en lo mismo, mira en otros lenguajes la clase que se encarga de almacenar la data retornada de una consulta tiene algunos metodos de filtrado de datos asi no se tendria que estar haciedo consulta a la base de datos cada vez que se presione una tecla sino que el filtro se deberia de hacer en el objeto ya cargado con la data. Estoy en busca de esa clase en JAVA si tienes algo por ahi me avisas,

Gracias.

Luis Leon
 
Mensajes: 9
Registrado: Enero/2008
Estado: Off-line
Grupo: Nuevo usuario
 
 
  Filtrar Consulta en jTable basado en ResultSet 21/Febrero/2008 - 20:47

Saludos amigos, quiero hacerles una consulta para ver que me sugieren. Estoy haciendo una ventana de consulta. Un JTable y JTextField. De manera que al ir escribiendo en el JTextField, se deberia ir filtrando la informacion consultada, actualizando el JTable en base a un ResultSet. Cuando hago la prueba con una tabla de 12 registros funciona a la perfeccion, el detalle es que cuando la prueba con una tabla de 40 mil registros, se pone lentisimo. Me gustaria tener su recomendaciones sobre lo que podria hacer al respecto ... Es correcto lo que estoy haciendo ? Como podria mejorarlo ? .. Agradezco mucho sus comentarios. Que utilizo es el siguiente:

// *** JDialgo JBuscar ***

 

public class JBuscar extends javax.swing.JDialog implements TableModelListener  {

private Connection conexion; 
private ResultSet consulta;
private ResultSetTableModel tableModel;   

// *** Constructor ***

public JBuscar() {
 Class.forName("com.ibm.as400.access.AS400JDBCDriver");
 conexion=DriverManager.getConnection(url,usuarios,clave);
 Statement sentencia=CONEXION.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);
 consulta=sentencia.executeQuery("SELECT CODIGOPAIS, DESCRIPCIONPAIS FROM PAIS");  
        tableModel = new ResultSetTableModel(consulta);
 initComponents();
}

// *** initComponents ***

private void initComponents() {
 ...

 jTextField1 = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new JTable(tableModel);

 ...
}


// *** Evento CaretUpdate del jTextField ***

private void jTextField1CaretUpdate(javax.swing.event.CaretEvent evt) {                                       
        if (!this.jTextField1.getText().trim().equals("")) {
         consulta = FrmPrincipal.getConexionPrincipal().Consulta("SELECT CODIGOPAIS, DESCRIPCIONPAIS FROM PAIS WHERE CODIGOPAIS + " LIKE '%" + this.jTextField1.getText().trim().toUpperCase() + "%'");
        } else {
                consulta = FrmPrincipal.getConexionPrincipal().Consulta("SELECT CODIGOPAIS, DESCRIPCIONPAIS FROM PAIS");
        }                
        tableModel = new ResultSetTableModel(consulta);
        this.jTable1.setModel(tableModel);     

    }

}

//**************************

 


Usuarios activos
12 usuarios activos: 0 miembros y 12 huespedes en el foro.
 Reglas de mensaje
puedes escribir nuevos temas
puedes responder a los temas
puedes adjuntar archivos
no puedes editar tus mensajes
Contactar con el Administrador del foro.

La utilización del servicio vendrá condicionada por la previa aceptación de las Condiciones Generales de Uso del Servicio.



Foro gratis creado en ForosWebGratis.com. Crea tu propio foro aquí.