JTableの行フィルタリングをRowFilter.ComparisonTypeで指定した比較方法で実行する
Total: 336, Today: 2, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
JTableの行フィルタリングをRowFilter.ComparisonTypeで指定した不等号、等号比較で実行するよう設定します。
Screenshot

Advertisement
Source Code Examples
private void setFilter(TableRowSorter<?> sorter, RowFilter.ComparisonType type) {
int num = model.getNumber().intValue();
sorter.setRowFilter(RowFilter.numberFilter(type, num));
}
View in GitHub: Java, KotlinDescription
- RowFilter.ComparisonType.AFTER
- たとえば、
RowFilter.numberFilter(RowFilter.ComparisonType.AFTER, 10)で作成したRowFilterはJTableの行の数値が10 < numの行を表示し、10 >= numの行はフィルタリングして非表示になる
- たとえば、
- RowFilter.ComparisonType.BEFORE
- たとえば、
RowFilter.numberFilter(RowFilter.ComparisonType.BEFORE, 10)で作成したRowFilterはJTableの行の数値が10 > numの行を表示し、10 <= numの行はフィルタリングして非表示になる
- たとえば、
- RowFilter.ComparisonType.EQUAL
JTableの行の数値が指定した数値と等しい場合その行を表示するフィルタになる
- RowFilter.ComparisonType.NOT_EQUAL
JTableの行の数値が指定した数値と等しくない場合その行を表示するフィルタになる
- 空の行(値が
nullなど)は比較対象にならず、どのRowFilter.ComparisonTypeを設定したフィルタでも常に非表示になる - 等号付き不等号の
ComparisonTypeは用意されていないが、RowFilter.orFilter(...)でフィルタを組み合わせて使用するなどで代用が可能
if (type == ComparisonType.AFTER || type == ComparisonType.BEFORE) {
RowFilter<TableModel, Integer> f1 = RowFilter.numberFilter(type, num);
ComparisonType eq = ComparisonType.EQUAL;
RowFilter<TableModel, Integer> f2 = RowFilter.numberFilter(eq, num);
sorter.setRowFilter(RowFilter.orFilter(Arrays.asList(f1, f2)));
}
Reference
- RowFilter.ComparisonType (Java Platform SE 8)
- java - JTable row filtering based on values of two different columns that Have same data - Stack Overflow