使用JTable或GlazedLists创建和使用多个过滤器/搜索

two*_*ate 1 java filtering jtable glazedlists

我查看了如何在这里使用多个过滤器和常规表,并且所有答案都指向了GlazedLists.但是,答案没有具体说明如何使用它.我能够让一个过滤器工作,但不知道如何获得多个过滤器.对于我使用的一个过滤器:

  // nameE is a BasicEventList containing classes (name) which 
  // contain the table values
  TextFilterList filtered = new TextFilterList(nameE);
  JTextField filterEdit = filtered.getFilterEdit();

  // Inside the table value class (name) there is a filter for myName
  public void getFilterStrings(List baseList) {
      baseList.add(myName);
  }
Run Code Online (Sandbox Code Playgroud)

复制代码并创建另一个代码JTextField不起作用.我看起来这个问题,它似乎CompositeMatcherEditor可行.问题是我不知道如何实现这一点.

另外,我正在使用Eclipse.我下载了GlazedLists1.8.0并将其放入Eclipse中.但是,我不能使用它.我到处都是红色正方形(源文件夹除外)!我甚至添加了jar文件.

我希望我已经正确地解释了自己.如果我需要扩展,请告诉我.

我的Pastebin:Name,Browser,TableFormat,TableModel

Kev*_*Day 5

不推荐使用TextFilterList - 请参阅javadocs - 但这是一个副作用.

您可以在这里使用几种方法 - 如果您想要非常简单,那么只需将过滤器列表包装在另一个过滤器列表中:

EventList filtered = new FilterList(new FilterList(nameE, myFirstMatcherEditor), mySecondMatcherEditor);
Run Code Online (Sandbox Code Playgroud)

更好的方法是使用多个匹配器编辑器来创建CompositeMatcherEditor:

EventList filtered = new FilterList(nameE, new CompositeMatcherEditor(myFirstMatcherEditor, mySecondMatcherEditor));
Run Code Online (Sandbox Code Playgroud)

您可以使用setMode控制是否使用AND或OR行为组合编辑器.

这里必须阅读有关使用过滤器列表的信息.

这里的截屏也值得花几分钟投资.