| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 11:01:02
|
diogoroos
Thread.start()
Membro desde: 16/01/2007 13:15:41
Mensagens: 32
Offline
|
Bom dia pessoal.
--Até vi alguns tópicos criados aqui e em outros fóruns mas a solução para este problema não ficou clara.
Queria saber se vocês já conseguiram implementar uma alteração em uma célula X enquanto digita-se algo em determinada célula.
Preciso de algo parecido com este abaixo, porém para células de uma JTable:
Sei que tem que implementar o TableModelListener e as ações devem ser no Model, e não na JTable, mas já quebrei a cabeça e não consegui. O máximo que consegui desta maneira foi mostrar uma msg dizendo que houve uma alteração na célula (TableModel.UPDATE), mas o valor é alterado para o que estava anteriormente após a msg. Tentei um setValueAt no evento do Model mas não consegue encontrar a linha/coluna que especifiquei e dá exceção.
Valeu!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 11:32:24
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Por que na implementação do seu setValueAt do model você não altera os dois valores?
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 11:37:50
|
diogoroos
Thread.start()
Membro desde: 16/01/2007 13:15:41
Mensagens: 32
Offline
|
ViniGodoy wrote:Por que na implementação do seu setValueAt do model você não altera os dois valores?
Exceção de índice... vou colocar novamente o TableModelListener para ver exatamente o erro e posto. Você teria um exemplo para eu ver se estou fazendo da maneira correta ?
-Valeu pela atenção.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 11:43:56
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
diogoroos wrote:Exceção de índice... vou colocar novamente o TableModelListener para ver exatamente o erro e posto. Você teria um exemplo para eu ver se estou fazendo da maneira correta ?
-Valeu pela atenção.
Como assim "exceção de índice". Você tem um model próprio?
A idéia é atualizar duas propriedades do seu objeto, ao invés de uma. Então é só fazer isso!
Valores seria um JList com sua classe, seja ela qual for.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 12:21:01
|
diogoroos
Thread.start()
Membro desde: 16/01/2007 13:15:41
Mensagens: 32
Offline
|
ViniGodoy wrote:
diogoroos wrote:Exceção de índice... vou colocar novamente o TableModelListener para ver exatamente o erro e posto. Você teria um exemplo para eu ver se estou fazendo da maneira correta ?
-Valeu pela atenção.
Como assim "exceção de índice". Você tem um model próprio?
A idéia é atualizar duas propriedades do seu objeto, ao invés de uma. Então é só fazer isso!
Valores seria um JList com sua classe, seja ela qual for.
Estou usando DefaultTableModel pq ainda não consegui criar um AbstractTableModel com JCheckBox...
-Obrigado pelo exemplo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 12:47:35
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Basta fazer:
Não deixe de ler esses ótimos artigos sobre o assunto:
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472
Você não vai se arrepender. Usar um model próprio evita duplicação de dados, deixa o código mais limpo, mais organizado e mais fácil.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 16:32:02
|
diogoroos
Thread.start()
Membro desde: 16/01/2007 13:15:41
Mensagens: 32
Offline
|
ViniGodoy wrote:Basta fazer:
Obrigado Vinícius!
Desculpe a ignorância a respeito, estou tentando implenetar a classe com um modelo AbstractTableModel mas ainda não consegui. O que seria setValorOriginal ?
A forma que estou utilizando o DefaultTableModel é a seguinte:
E para popular a tabela eu faço:
Se não for pedir demais, como ficaria com AbstractTableModel ao invés de DefaultTableModel ?
Muito obrigado mais uma vez.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 18:42:29
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Você já leu os artigos que eu te passei?
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/07/2008 18:59:10
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Olha só. Suponha que vc tenha a classe: Aqui não coloquei implementação. Mas suponha que esses gets e sets funcionam. Aí vc cria o seu TableModel. Ele vai trabalhar diretamente com uma lista de TitulosDoMains. A mesma que vc obtém do seu ServerFacade. Vamos supor que vc queira para coluna 0 o valor Original e para coluna 1 o valor aberto. Agora, para fazer sua tabela, faça só: O ideal ainda seria adicionar métodos para inserir e remover títulos do seu modelo. Para isso, você terá que usar os eventos para avisar a tabela que isso ocorreu. Os eventos chamam-se fireTableRowInserted, fireTableRowRemove. Um exemplo: O que vc tem que entender é que quem chama os métodos do model é a tabela. É a forma dela perguntar para o seu programa o que colocar em seu interior. Ela diz "Estou desenhando a linha row e coluna col. Que valor tem aí?". Mas ela faz isso através do método getValueAt. Da mesma forma, quando alguém edita sua tabela, ela diz: "Ei! Editaram uma das células. É a de linha rowIndex e coluna columnIndex. O objeto, já com a modificação é esse aValue aqui.". Ela faz isso através do setValueAt. Então, vc atualiza o seu modelo, se achar que deve. A regra é: 1. A tabela desenha dados, mas não sabe que dados são esses; 2. O modelo é quem sabe a respeito dos dados;
This message was edited 6 times. Last update was at 17/11/2008 13:08:26
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
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 |
|
|
 |
|
|