首页 > 解决方案 > 如何根据多个 JComboBox 选择从 JTable 中获取一行?

问题描述

过滤功能代码

 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实例

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);   
}                                          

一旦我选择了一个类别,它将根据类别进行过滤,但如果我选择了类别和用户类型,我需要一次根据类别和用户类型进行过滤。怎么做?

标签: javaswingjtablejcomboboxtablerowsorter

解决方案


过滤功能

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 实例

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

推荐阅读