JTableの行フィルタリングをRowFilter.ComparisonTypeで指定した比較方法で実行する
Total: 59
, Today: 1
, Yesterday: 2
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, KotlinExplanation
- 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