Java - Filtrado de tabla con combobox y checkbox en cadena

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Filtrado de tabla con combobox y checkbox en cadena

Publicado por Fernando (3 intervenciones) el 11/03/2021 16:05:17
Buenos días estimados!!!
Tengo creada una tabla con datos en Java Swing. Para filtrar datos tengo tres herramientas:
- Un combobox con el cual puedo elegir una opción de filtrado.
- Un textfield donde puedo filtrar a partir de un texto escrito.
- Un checkbox para filtrar mediante un tilde.

El tema principal es que quiero concatenar los tres, es decir, un filtro en cadena... por ejemplo, si elegí algo con el combobox, que luego, al escribir en el textfield, me filtre a partir de lo ya filtrado.

Paso a mostrarles el código de filtrado de los tres elementos:

ItemStateChanged del combobox:

1
2
3
4
5
6
7
8
9
10
11
12
private void Combo_cerradoItemStateChanged(java.awt.event.ItemEvent evt) {
 
    filtro.setText("");//Si selecciono un item del combo, borro el filtro
    selec=Combo_cerrado.getSelectedItem().toString();
    TableRowSorter<DefaultTableModel> trs = new TableRowSorter<DefaultTableModel> (modelo);
    t_consulta.setRowSorter(trs);
    if(selec!=" "){
        trs.setRowFilter(RowFilter.regexFilter(selec));
    }else{
        t_consulta.setRowSorter(trs);
    }
}

KeyTyped del textfield:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void filtroKeyTyped(java.awt.event.KeyEvent evt) {
    Combo_cerrado.setSelectedIndex(0);//Si escribo en el filtro, reinicio el Combobox de CIERRE
    int numeroCaracteres = 20;
    if(filtro.getText().length()>=numeroCaracteres){
        evt.consume();
        JOptionPane.showMessageDialog(null, "El filtro se limita a 20 caracteres cómo máximo");
    }
 
    texto=filtro.getText();
    TableRowSorter<DefaultTableModel> trs = new TableRowSorter<DefaultTableModel> (modelo);
    t_consulta.setRowSorter(trs);
    if(texto!=" "){
        trs.setRowFilter(RowFilter.regexFilter(texto));
    }else{
        t_consulta.setRowSorter(trs);
    }
 
}

ItemStateChanged checkbox:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void jCheckBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
    if (jCheckBox1.isSelected()==true){
        check="true";
    }else{
        check="";
    }
    TableRowSorter<DefaultTableModel> trs = new TableRowSorter<DefaultTableModel> (modelo);
    t_consulta.setRowSorter(trs);
    if(check!=" "){
        trs.setRowFilter(RowFilter.regexFilter(check));
    }else{
        t_consulta.setRowSorter(trs);
    }
 
}

Espero haber sido claro.

Muchas gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder