【问题标题】:How to get a row from JTable based on multiple JComboBox selections?如何根据多个 JComboBox 选择从 JTable 中获取一行?
【发布时间】:2021-11-17 08:44:05
【问题描述】:

过滤功能代码

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

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

【问题讨论】:

  • 与您的问题无关,但您不能使用!= 进行字符串相等...您需要使用equals() 方法。 ==!= 用于引用相等性。
  • 阅读RowFilter API。您可以使用andFilter(...) 方法来创建您的过滤器。
  • 知道了,谢谢。 @camickr

标签: java swing jtable jcombobox tablerowsorter


【解决方案1】:

过滤功能

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

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
相关资源
最近更新 更多