java - 如何根据多个 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);
}
一旦我选择了一个类别,它将根据类别进行过滤,但如果我选择了类别和用户类型,我需要一次根据类别和用户类型进行过滤。怎么做?
解决方案
过滤功能
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);
}
推荐阅读
- c++ - 宏参数 HEX 和 DEC
- php - 我不明白为什么我的变量是 NULL
- c# - 文件中的千位分隔符存在本地化错误
- android - 使用 AutoCompleteTextView 在下拉菜单中仅显示自定义对象的一个参数
- graphql - 如何在 prisma 订阅中返回自定义数据
- angular - 如何在手表模式下提供角度元素应用程序?
- javascript - 如何在 Zepto 上使多个 div 可排序
- sapui5 - 从 listItems 调用动态表值 Onselect
- android - EditText 仅采用动态形式的最后一个值
- ios - 在 cellForRowAt 中不工作 UITableView 但 numberOfRowsInsection 在 Swift 中工作