一連のオプションからのフィルタリングに対処するために独自の を実装するための良いリファレンスとして、Custom MatcherEditor スクリーンキャストを紹介します。Matcher
重要な部分は の作成です。MatcherEditor
この例では、国民のテーブルを国籍別にフィルタリングしています。
private static class NationalityMatcherEditor extends AbstractMatcherEditor implements ActionListener {
private JComboBox nationalityChooser;
public NationalityMatcherEditor() {
this.nationalityChooser = new JComboBox(new Object[] {"British", "American"});
this.nationalityChooser.getModel().setSelectedItem("Filter by Nationality...");
this.nationalityChooser.addActionListener(this);
}
public Component getComponent() {
return this.nationalityChooser;
}
public void actionPerformed(ActionEvent e) {
final String nationality = (String) this.nationalityChooser.getSelectedItem();
if (nationality == null)
this.fireMatchAll();
else
this.fireChanged(new NationalityMatcher(nationality));
}
private static class NationalityMatcher implements Matcher {
private final String nationality;
public NationalityMatcher(String nationality) {
this.nationality = nationality;
}
public boolean matches(Object item) {
final AmericanIdol idol = (AmericanIdol) item;
return this.nationality.equals(idol.getNationality());
}
}
}
これがどのように使用されるかは、 sMatcherEditor
に似ているため、あまりなじみがないはずです。TextMatcherEditor
EventList idols = new BasicEventList();
NationalityMatcherEditor nationalityMatcherEditor = new NationalityMatcherEditor();
FilterList filteredIdols = new FilterList(idols, nationalityMatcherEditor);
上記のサンプルでは、JComboBox
が宣言され、MatcherEditor
それ自体で開始されます。追跡しているオブジェクトへの参照が必要ですが、そのスタイルに正確に従う必要はありません。私の場合、Swing コントロールを見ていると、フォームの残りの部分を宣言して開始し、次に参照を渡す傾向があります。
....
private JComboBox nationalityChooser;
public NationalityMatcherEditor(JComboBox alreadyConfiguredComboBox) {
this.nationalityChooser = alreadyConfiguredComboBox;
}
....