【问题标题】:Filtering a Table using a Combobox in java [closed]在java中使用组合框过滤表[关闭]
【发布时间】:2013-11-27 10:24:34
【问题描述】:

我有一个表格和四个组合框,即“资产类别”、“部门:”、“分支:”和“资产状态”。

问题:现在我希望能够过滤我的表格,以便我可以选择资产“土地和建筑”的类别,并希望选择资产的分支。

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

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

以此类推其他组合框。非常感谢您的帮助,谢谢

【问题讨论】:

  • 您可以在 Netbeans 7 中以与在 Netbeans 6、Eclipse 或使用文本编辑器编写的 Java 文件中完全相同的方式执行此操作。也就是说,Netbeans 与它无关,是一个无关紧要的标签。
  • “非常感谢您的帮助” 您有问题吗?你试过什么吗?例如,“JTable 过滤器教程”的 Google 将顶部链接显示为 How to Use Tables,这似乎涵盖了确切的要求。
  • @Sarkwa 抱歉不明白,我想念问题、方向、感觉

标签: java mysql swing jtable jcombobox


【解决方案1】:

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

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

然后,您可以将RowFilter.regexFilter(String regex, int... indices) 与分拣机一起使用。
请查看包含示例的官方教程页面的Sorting and Filter 部分。您可以使用 ItemListenerJComboBox 创建新的过滤器,以便在项目选择事件上使用 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);

     }
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多