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:
KeyTyped del textfield:
ItemStateChanged checkbox:
Espero haber sido claro.
Muchas gracias!!!
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
0