| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/08/2008 10:21:41
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 9465
Localização: Curitiba
Offline
|
Depois de ver muita gente pedindo aqui no GUJ, decidi postar nossa classe de AutoFiltro para JTable. Funciona exatamente igual ao AutoFiltro do Excel, porém, também suporta filtro por wildcards (estilo os do DOS). Também anexei um TableModel muito mais inteligente que o DefaultTableModel. Ele se baseia num enum de colunas e já tem todas as funcionalidades que esperamos de um model (ele é muito próximo de um ArrayList). Dêem uma olhada. Aí tem também um exemplo, que escrevi para mostrar para um aluno meu como se fazia para usar.
| Nome do arquivo |
src.zip |
Download
|
| Descrição |
Auto-Filtro estilo Excel em JTable + TableModel esperto |
| Tamanho |
22 Kbytes
|
| Baixado: |
1166 vez(es) |
This message was edited 3 times. Last update was at 23/08/2008 10:47:54
|
Desenvolve jogos de computadores?
http://www.pontov.com.br
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro! |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/12/2008 10:09:30
|
Mark_Ameba
Forum Spammer
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.jpg)
Membro desde: 11/04/2007 18:18:20
Mensagens: 3253
Localização: São Paulo/SP
Offline
|
Pena que vi isso só agora precisei disso a um tempo e acabei criando o meu.
Mas o meu TableModel, TableHeader e RowFilter se baseia em Reflection.
|
Projeto Mark-Utils no Google Code!
Ainda usando DefaultTableModel no seu projeto?? PARE! Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro!
Tower Defense Game - RC 3 - 19/02/2010
MarkyBlog: http://markyameba.wordpress.com : Swing & Reflection.
Faça perguntas inteligentes
Programar telas Swing na mão nunca foi tão fácil: MigLayout!
Totalmente GridBagLayout (Joke)
Develop games is fantastic, with words you can make worlds!!!
It's more useful to have a fun game with old graphics, than a boring game with good graphics.
Quer aprender a fazer jogos? : Créditos ao ViniGodoy
Each of their nuggets of wisdom contracted to a sound bite:
Joshua Bloch: Write Lots of Code
Chet Haase: Don't Put Your Entire Application in One Method
Masood Mortazavi: Start Simple and Keep Learning
Cay Horstmann: First, Don't Panic |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2009 16:09:52
|
javer
JavaEvangelist
![[Avatar]](/images/avatar/133cc6b5565f9a47831eeea9854a29a2.jpeg)
Membro desde: 10/09/2007 12:06:29
Mensagens: 374
Localização: São Paulo - SP
Offline
|
ViniGodoy wrote:Depois de ver muita gente pedindo aqui no GUJ, decidi postar nossa classe de AutoFiltro para JTable. Funciona exatamente igual ao AutoFiltro do Excel, porém, também suporta filtro por wildcards (estilo os do DOS).
Também anexei um TableModel muito mais inteligente que o DefaultTableModel. Ele se baseia num enum de colunas e já tem todas as funcionalidades que esperamos de um model (ele é muito próximo de um ArrayList).
Dêem uma olhada. Aí tem também um exemplo, que escrevi para mostrar para um aluno meu como se fazia para usar.
Me desculpe por voltar nesse assunto mas eu peguei seu código e não consegui colocar ele na minha tabela.
Tenho um AbstractTabelModel com os seguintes tipos de colunas:
Na view:
Será que você poderia me dar uma dica como eu posso usar esse seu Filtro na minha tabela?
|
=======================================
Netbeans 6.5 - TopLink - Hibernate Validator - Swing => Ubuntu
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2009 16:15:06
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 9465
Localização: Curitiba
Offline
|
Por que seu model tem uma referência à tabela? Essa referência não deveria existir! =o É bom guardar a variável do filtro em uma propriedade, já que você precisará dela para converter as linhas da view na linha do model, e vice-versa.
This message was edited 1 time. Last update was at 31/08/2009 16:17:01
|
Desenvolve jogos de computadores?
http://www.pontov.com.br
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2009 16:26:25
|
javer
JavaEvangelist
![[Avatar]](/images/avatar/133cc6b5565f9a47831eeea9854a29a2.jpeg)
Membro desde: 10/09/2007 12:06:29
Mensagens: 374
Localização: São Paulo - SP
Offline
|
ViniGodoy wrote:Por que seu model tem uma referência à tabela? Essa referência não deveria existir! =o
É bom guardar a variável do filtro em uma propriedade, já que você precisará dela para converter as linhas da view na linha do model, e vice-versa.
Tenho uma referência a tabela porque tenho esse método aqui:
Esse filtro na verdade apenas reordena as linhas da tabela?
|
=======================================
Netbeans 6.5 - TopLink - Hibernate Validator - Swing => Ubuntu
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/08/2009 16:32:47
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 9465
Localização: Curitiba
Offline
|
Ele reordena e filtra.
O problema é que você passa a ter dois índices, e isso provavelmente irá quebrar seu método.
Um deles é o que o tablefilter está exibindo, o outro é o do seu model. O tablefilter tem métodos para converter um índice no outro.
|
Desenvolve jogos de computadores?
http://www.pontov.com.br
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/09/2009 19:16:44
|
javer
JavaEvangelist
![[Avatar]](/images/avatar/133cc6b5565f9a47831eeea9854a29a2.jpeg)
Membro desde: 10/09/2007 12:06:29
Mensagens: 374
Localização: São Paulo - SP
Offline
|
ViniGodoy wrote:Por que seu model tem uma referência à tabela? Essa referência não deveria existir! =o
É bom guardar a variável do filtro em uma propriedade, já que você precisará dela para converter as linhas da view na linha do model, e vice-versa.
Quando eu uso meu AbastractTableModel:Sai com as colunas formatadas com os tamanhos que eu defini e eu consigo adicionar linhas (Financeiro) tranqüilamente:
Agora quando eu aplico o modelo com o Filtro as colunas saem todas desconfiguradas e eu não consigo adicionar linhas:
Alguma dica de como eu poderia resolver isso?
|
=======================================
Netbeans 6.5 - TopLink - Hibernate Validator - Swing => Ubuntu
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/09/2009 21:46:18
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 9465
Localização: Curitiba
Offline
|
Nessa linha: (FinanceiroTableModel) tabelaContaPagarReceber.getModel(); Você está tentando obter o model e fazer um cast para FinanceiroTableModel. No entanto, o model da tabela agora é um TableFilter. Eu sugiro que você guarde uma referência do seu Model e do Filter, em atributos que você tenha certeza de quem é quem. Então, evite a chamada de table.getModel e use esses atributos diretamente.
This message was edited 1 time. Last update was at 01/09/2009 21:47:54
|
Desenvolve jogos de computadores?
http://www.pontov.com.br
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2009 08:53:58
|
javer
JavaEvangelist
![[Avatar]](/images/avatar/133cc6b5565f9a47831eeea9854a29a2.jpeg)
Membro desde: 10/09/2007 12:06:29
Mensagens: 374
Localização: São Paulo - SP
Offline
|
Ok, eu guardei a referência ao filtro, minha pergunta é: como eu adiciono dados a JTable?
Quando eu usava o meu modelo eu tinha um método nele que recebia uma lista e atualizava o modelo e a tabela, agora nesse modelo do TableFilter eu não entendi como adicionar dados nele.
|
=======================================
Netbeans 6.5 - TopLink - Hibernate Validator - Swing => Ubuntu
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2009 09:38:22
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 9465
Localização: Curitiba
Offline
|
Basta adicionar dados ao seu modelo, normalmente (e não ao filtro).
Por isso é importante guardar uma referência para o model e para o filtro.
|
Desenvolve jogos de computadores?
http://www.pontov.com.br
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2009 09:56:09
|
javer
JavaEvangelist
![[Avatar]](/images/avatar/133cc6b5565f9a47831eeea9854a29a2.jpeg)
Membro desde: 10/09/2007 12:06:29
Mensagens: 374
Localização: São Paulo - SP
Offline
|
Ok, muito obrigado, funcionou como você disse, agora eu gostaria de saber porque está sendo perdida todas as minhas configurações no ColumnModel (CellRenders, CellEditor, largura das colunas)?
No construtor da classe TableFilter eu verifiquei as larguras das colunas e estão chegando corretamente.
|
=======================================
Netbeans 6.5 - TopLink - Hibernate Validator - Swing => Ubuntu
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2009 10:09:14
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 9465
Localização: Curitiba
Offline
|
Não sei, nunca vi esse comportamento. E olha que também uso colunas de tamanho diferente, etc.
Não funciona nem se vc definir esses dados depois de associar o filtro?
|
Desenvolve jogos de computadores?
http://www.pontov.com.br
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2009 10:21:26
|
javer
JavaEvangelist
![[Avatar]](/images/avatar/133cc6b5565f9a47831eeea9854a29a2.jpeg)
Membro desde: 10/09/2007 12:06:29
Mensagens: 374
Localização: São Paulo - SP
Offline
|
Muito obrigado, agora funcionou, espero não mais ter que precisar te incomodar com esse assunto novamente.
Muito obrigado mesmo.
|
=======================================
Netbeans 6.5 - TopLink - Hibernate Validator - Swing => Ubuntu
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2009 11:13:42
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 9465
Localização: Curitiba
Offline
|
Sem problemas. Fico feliz em saber que a classe tenha funcionado num table complexo como o seu.
|
Desenvolve jogos de computadores?
http://www.pontov.com.br
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2009 13:22:27
|
javer
JavaEvangelist
![[Avatar]](/images/avatar/133cc6b5565f9a47831eeea9854a29a2.jpeg)
Membro desde: 10/09/2007 12:06:29
Mensagens: 374
Localização: São Paulo - SP
Offline
|
Na verdade tenho mais uma pergunta.
Onde eu trato a formatação do dado adicionado naquele popUP da coluna, na imagem tem uma coluna do tipo Date que quero mostrar a data no formato: dd/MM/yyyy
Eu (ainda) não consegui localizar nos código onde está sendo feito isso, e também como converter de volta quando for selecionado pelo usuário para atualizar o filtro.
|
=======================================
Netbeans 6.5 - TopLink - Hibernate Validator - Swing => Ubuntu
|
|
|
 |
|
|