How to get a row from JTable based on multiple JComboBox selections?

63 Views Asked by At

Code for filter function

 private void filter(String str){
    tModel= (DefaultTableModel)table.getModel();

    TableRowSorter<DefaultTableModel> trs = new TableRowSorter<>(tModel);
    if(str != "All"){
     table.setRowSorter(trs);
     trs.setRowFilter(RowFilter.regexFilter(str));
    }else{
       table.setRowSorter(trs);  
    }    
}

JComboBox instances

private void cCategoryItemStateChanged(java.awt.event.ItemEvent evt) {                                           
    String category = cCategory.getSelectedItem().toString();
    filter(category);
}                                          

private void cUserTypeItemStateChanged(java.awt.event.ItemEvent evt) {                                           
    String user_type = cUserType.getSelectedItem().toString();
    filter(user_type);   
}                                          

Once I have selected a category it will filter based on category, but I need to filter based on both category and user type at a time if I had selected category and user type. How to do that?

1

There are 1 best solutions below

1
AudioBubble On

Filter function

private void filter(String str,String str1){
    if(str.equals("All") && str1.equals("All")){
       tModel= (DefaultTableModel)table.getModel();
       TableRowSorter<DefaultTableModel> trs = new TableRowSorter<>(tModel);
       table.setRowSorter(trs);
    }else if(str1.equals("All") && !str.equals("All") ){
       tModel= (DefaultTableModel)table.getModel();
       TableRowSorter<DefaultTableModel> trs = new TableRowSorter<>(tModel);
       table.setRowSorter(trs); 
       trs.setRowFilter(RowFilter.regexFilter(str));
    }else if(!str1.equals("All") && str.equals("All")){
       tModel= (DefaultTableModel)table.getModel();
       TableRowSorter<DefaultTableModel> trs = new TableRowSorter<>(tModel);
       table.setRowSorter(trs); 
       trs.setRowFilter(RowFilter.regexFilter(str1));
    }else{
       RowFilter<DefaultTableModel, Object> location = RowFilter.regexFilter(str, 1);
       RowFilter<DefaultTableModel, Object> customer_group = RowFilter.regexFilter(str1, 0);
       List<RowFilter<DefaultTableModel, Object>> filters = new ArrayList<RowFilter<DefaultTableModel, Object>>();
       filters.add(location);
       filters.add(customer_group);
       RowFilter<DefaultTableModel, Object>  compoundRowFilter = RowFilter.andFilter(filters);
       tModel= (DefaultTableModel)table.getModel();
       TableRowSorter<DefaultTableModel> trs = new TableRowSorter<>(tModel);
       table.setRowSorter(trs); 
       trs.setRowFilter(compoundRowFilter); 
}

JComboBox instances

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    customer_group = cCustomerGroup.getSelectedItem().toString();
    location = cLocation.getSelectedItem().toString();
    filter(customer_group,location);
}