使用java中的Combobox过滤表

时间:2013-11-27 10:24:35

标签: java mysql swing jtable jcombobox

我有一张桌子和四个组合框,即“资产类别”,“部门:”,“分支机构:”和“资产状态”。

问题:现在我希望能够以这样的方式过滤我的表格,即我可以选择资产“LAND& BUILDING”的类别,并希望选择资产的分支。

所以当我选择“LAND& BUILDING”时,它会显示在我的表格中,当我选择一个分支时,它也会显示在表格中。所以表中的输出变为

 ASSET CATEGORY   |   BRANCHES
------------------|-------------
LAND & BUILDING   |   BRANCH 1

等等其他组合框。我非常感谢帮助谢谢

1 个答案:

答案 0 :(得分:2)

表排序和过滤由分拣机对象管理。提供分拣器对象的最简单方法是将autoCreateRowSorter bound属性设置为true:

JTable table = new JTable();
table.setAutoCreateRowSorter(true);

然后,您可以将RowFilter.regexFilter(String regex, int... indices)与分拣机一起使用 请查看包含示例的官方教程页面的Sorting and Filter部分。您可以ItemListener使用JComboBox创建新过滤器,以便在项目选择事件中使用regexFiler功能。

jComboBox2.addItemListener(new ItemListener() {

   @Override
   public void itemStateChanged(ItemEvent e) {

     JComboBox comb = (JComboBox)e.getSource();
     String selText = (String) comb.getSelectedItem();
     RowFilter<DefaultTableModel, Object> rf = null;

     try {
         rf = RowFilter.regexFilter(selText,
                                 table.getColumnModel().getColumnIndex("ASSET CATEGORY"));
      } catch (PatternSyntaxException ex) {
                     ex.printStackTrace();
      }
      ((TableRowSorter)table.getRowSorter()).setRowFilter(rf);

     }
});