[JTable] Filtro por data [RESOLVIDO]

Alguém aí já fez um filtro por data numa JTable?
Eu consegui fazer, usando o RowFilter.dateFilter, mas ele não tem opção de maior ou igual e menor ou igual, então não atende perfeitamente ao que espero. É inviável ter sempre que digitar uma data com um dia antes e um dia depois pra filtrar corretamente…
Eu tentei usar GlazedLists e consegui fazer a filtragem, mas ele é extremamente lento pra filtrar campos com String, por causa do contains(), então descartei (pelo menos até conseguir achar uma solução).

RESOLVIDO
Pra quem precisar, segue a solução:

Set<RowFilter<Object, Object>> filtrosTabela = new HashSet<>();
if (pegarDataInicialPesquisa() != null) {
			data = formatador.format(pegarDataInicialPesquisa());
			Set<RowFilter<Object, Object>> datas = new HashSet<>();
			datas.add(RowFilter.dateFilter(RowFilter.ComparisonType.AFTER,
					formatador.parse(data), LancamentosTableModel.COL_DATA));
			datas.add(RowFilter.dateFilter(RowFilter.ComparisonType.EQUAL,
					formatador.parse(data), LancamentosTableModel.COL_DATA));
			filtrosTabela.add(RowFilter.orFilter(datas));
		}

		if (pegarDataFinalPesquisa() != null) {
			data = formatador.format(pegarDataFinalPesquisa());
			Set<RowFilter<Object, Object>> datas = new HashSet<>();
			datas.add(RowFilter.dateFilter(RowFilter.ComparisonType.BEFORE,
					formatador.parse(data), LancamentosTableModel.COL_DATA));
			datas.add(RowFilter.dateFilter(RowFilter.ComparisonType.EQUAL,
					formatador.parse(data), LancamentosTableModel.COL_DATA));
			filtrosTabela.add(RowFilter.orFilter(datas));
		}

// outros filtros.....

sorter.setRowFilter(RowFilter.andFilter(filtrosTabela));

E se você criar o filtro com um orFilter(…)???
http://docs.oracle.com/javase/6/docs/api/javax/swing/RowFilter.html#orFilter(java.lang.Iterable)

Aí nos casos de >= e <= você cria os dois dateFilter com o ComparisonType.AFTER (ou BEFORE) e o ComparisonType.EQUAL e joga dentro do orFilter(…)

http://docs.oracle.com/javase/6/docs/api/javax/swing/RowFilter.ComparisonType.html

Não sei se essa é a melhor solução (pois ainda não precisei fazer nada nesse sentido), mas se fosse fazer, de início pensei assim.

É claro!
Você me deu uma grande ajuda, irmão.
Impressionante como as vezes a gente não consegue ver algo simples porque tá acostumado com uma forma de fazer as coisas.

Pra quem precisar, implementei assim:

Set<RowFilter<Object, Object>> filtrosTabela = new HashSet<>();
if (pegarDataInicialPesquisa() != null) {
			data = formatador.format(pegarDataInicialPesquisa());
			Set<RowFilter<Object, Object>> datas = new HashSet<>();
			datas.add(RowFilter.dateFilter(RowFilter.ComparisonType.AFTER,
					formatador.parse(data), LancamentosTableModel.COL_DATA));
			datas.add(RowFilter.dateFilter(RowFilter.ComparisonType.EQUAL,
					formatador.parse(data), LancamentosTableModel.COL_DATA));
			filtrosTabela.add(RowFilter.orFilter(datas));
		}

		if (pegarDataFinalPesquisa() != null) {
			data = formatador.format(pegarDataFinalPesquisa());
			Set<RowFilter<Object, Object>> datas = new HashSet<>();
			datas.add(RowFilter.dateFilter(RowFilter.ComparisonType.BEFORE,
					formatador.parse(data), LancamentosTableModel.COL_DATA));
			datas.add(RowFilter.dateFilter(RowFilter.ComparisonType.EQUAL,
					formatador.parse(data), LancamentosTableModel.COL_DATA));
			filtrosTabela.add(RowFilter.orFilter(datas));
		}

// outros filtros.....

sorter.setRowFilter(RowFilter.andFilter(filtrosTabela));

Tópico movido para o fórum de interface gráfica.