Recuperar ID de Jtable  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20584
Localização: Curitiba/PR
Offline

Não use DefaultTableModel!!!!

Motivos:

1. É mais difícil que escrever seu próprio TableModel;
2. É mais lento (usa classes sincronizadas);
3. Ocupa mais espaço em memória (duplica seus dados);
4. Deixa o código mais confuso e difícil de manter;
5. Usa casts inseguros;
6. Força que você tenha que exibir informações desnecessárias (como o ID) na tabela, ou controlar o ID numa lista separada;
7. Faz a sua mulher te deixar, o leite da sua geladeira azedar, e pessoas apontarem o dedo para você na rua.

This message was edited 1 time. Last update was at 30/03/2010 08:07:01


@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
[WWW]
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

ViniGodoy wrote:Não use DefaultTableModel!!!!

Motivos:

1. É mais difícil que escrever seu próprio TableModel;
2. É mais lento (usa classes sincronizadas);
3. Ocupa mais espaço em memória (duplica seus dados);
4. Deixa o código mais confuso e difícil de manter;
5. Faz a sua mulher te deixar, o leite da sua geladeira azedar, e pessoas apontarem o dedo para você na rua.

Nossa! O último argumento eu não conhecia ainda...

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

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
[Email] [WWW] [MSN]
silviogs
JavaGuru

Membro desde: 09/08/2008 18:04:33
Mensagens: 204
Localização: João Pesoa - PB
Offline

Olá amigo

uma rotina que desenvolvi:

chamda da consulta:



agora na tela de consulta:



Boa Sorte!

Silvio Guedes

Linux (Ubuntu), Java, NetBeans, PostgreSQL
erico_kl
Virtual Machine Man

Membro desde: 10/05/2008 08:59:08
Mensagens: 531
Offline

ViniGodoy wrote:5. Faz a sua mulher te deixar, o leite da sua geladeira azedar, e pessoas apontarem o dedo para você na rua.

ah.. então foi por isso..
ceklock
JavaBaby

Membro desde: 20/04/2009 02:27:54
Mensagens: 88
Localização: Porto Alegre
Offline

Bom saber. Nunca vou usar DefaultTableModel.

Quem usa DefaultTableModel não arranja namorada
erico_kl
Virtual Machine Man

Membro desde: 10/05/2008 08:59:08
Mensagens: 531
Offline

Páscoa.. época de ressurreição..
AssemblyXP
Debugger
[Avatar]

Membro desde: 24/05/2009 21:15:35
Mensagens: 51
Localização: Brasil / Valparaízo-GO
Offline

cara nao concordo... uso defeautTableModel e nunca tive problemas.... ela ja contém os métodos nescessários, getSelectedRow, getValueAT, e etc.


realmente nunca tive problema, faço consultas no BD e tenho uma resposta rápida, sem tilts....

e detalhe, uso ela em uma JInternalFrame, integrada.... nunca tive problema.


fiz uma aplicação de quase 50 classes, todas abrindo em uma só janela... e tem umas 15 a 25 tabelas, todas como DefeautTableModel....


so q detalhe, nao sei como criar a minha própria TableModel... nao tenho nem idéia, nunca tive nem o interesse em pesquisar como se faz, por isso penso assim, mais

quem sabe... pode ser que essas opções que o VINY GODOY abordou ai pode ser verdade, mais so se me provarem ao contrário....

se eu ver uma tabela que nao seja DefeautTableModel rodando, e eu ver as diferenças....ai sim...


mais se alguem ai souber como faz uma TableModel... posta ai... pode ate esclarecer a dúvida de outros... q por sinal é a minha agora... irei pesquisar por ai como se faz....


valew galera....

Make your own way - <pedro> Pedro - UNIDESC 2011 </pedro>
[Email] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20584
Localização: Curitiba/PR
Offline

AssemblyXP wrote:so q detalhe, nao sei como criar a minha própria TableModel... nao tenho nem idéia, nunca tive nem o interesse em pesquisar como se faz, por isso penso assim, mais


Bom, isso explica muita coisa.

Você já consegue criar suas próprias classes de negócio e separa a aplicação em camadas, como rezam as boas práticas de programação?

Ou está rodando selects direto no banco e jogando na tabela, como se fazia lá pelo final dos anos 80?


Se for a primeira opção, acho muitíssimo difícil que você realmente prefira o DefaultTableModel. Também gostaria de saber como você resolveu o problema de, por exemplo, atualizar um registro de um campo, sem exibir seu ID na tabela.

@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
[WWW]
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

É, eu também gostaria de saber como voce criou essas 15~25 DefaultTableModels para modificar o conteudo da tabela.

Voce criou tudo isso de DAOs só para preencher a tabela?

E a duvida do ViniGodoy ainda é valida
ViniGodoy wrote:
Também gostaria de saber como você resolveu o problema de, por exemplo, atualizar um registro de um campo, sem exibir seu ID na tabela.

Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
discorpio
Virtual Machine Man
[Avatar]
Membro desde: 06/02/2010 18:46:46
Mensagens: 547
Localização: Rio de Janeiro
Offline

Boa tarde a todos.

Também gostaria de saber como voce recupera uma linha de registros sem fazer o casting Isto é presumindo que voce tenha criado entidade de dados, com um bean por exemplo, passando os dados para o DAO.

Com AbstractTableModel, voce já cria um TableModel, onde o armazenamento do JTable pode ser um dessas entidades de dados, onde ao se clicar na linha de um JTable, ele já retorna essa entidade devidamente populada, é muito melhor do que voce ficar fazendo diversos castings desnecessários.

Além disso, se voce tem uma aplicação que acessa 100 tabelas de um banco, voce vai criar 100 classes DefaultTableModels, como o Marky.Vasconcelos citou.

Aqui na Secretaria, nós temos um Mega Banco de dados que acessa simplesmente 325 tabelas, e consegui criar lista de dados configurando uma classe extendida de AbstractTableModel genérica para todas as 325 tabelas, onde elas são acessadas em único JTable.

O Senhor é meu Pastor e nada me faltará. (Sl. 23:01)
[MSN]
AssemblyXP
Debugger
[Avatar]

Membro desde: 24/05/2009 21:15:35
Mensagens: 51
Localização: Brasil / Valparaízo-GO
Offline

correto, eu crio um pacote DAO so para métodos de acessos ao banco, um pacote GETs para armazenar as minhas classes ENTIDADES de GETs and SETTERRS....Encapsulamento e outro pacote, APRESENDAÇÃO, só com as classes de layouts... as que irá aparecer para o usuário....

REEEESUMINDO !!! USO O PADRÃO MVC!!!!

e estava programando em SDI, ião se abrindo JANELAS E JANELAS....era janela pra todo lado.....

agora estou programando em MDI... fica muuuito mais prático...

e atualizo registro, excluo, altero, tudo passando para outra classe, capturando a linha selecionada.... e tambem, nas minhas classes de cadastros de funcionario concursados, terceirizados e etc., os cargos ou salários são listados dentro de uma comboBox apartir de uma consulta em uma tabela específica do BD de acordo para cada cargo.

exemplo....

para eu listar meu funcionário na minha defeautTableModel uso:



pode nao ser a melhor maneira, mais é so assim que eu sei fazer....

outro exemplo, pra eu alterar uma linha selecionada uso:



para excluir a mesma coisa:



e dentro dos meus métodos de alteração, exclusão ou insersão, os próprios métodos ja fazem REFRESH na minha tabela automaticamente.

na execução...




+++ mais eu repito, essas nao devem ser as melhores maneiras de se fazer.... por isso que entrei no fórum, PARA APRENDER.... e APRENDER A ENSINAR....

pq a minha dúvida que tirei aqui no FÓRUM, posso muito bem ensinar a alguém que esta tbm afim de aprender... mais so agora eu me deparei com um problema usando defeautTableModel, problema para imprimir a tabela, ou gerar um relatório....

so consigo imprimir criando uma JTable e adicionando colunas e linhas, através de vectores, sem consultas no BD.

mais eu vou dar mais uma pesquisada..... vou tentar implementar consultar a esses vectores de inserção.

e eu estou muuuuito curioso agora em criar uma TableModel, ou tentar usar uma dessas ai AbstractTableModel ou ObjectTableModel....

mais é isso ai....

e galera, confesso, sou leigo em JAVA... so q eu sei bastante coisa... e me preoculpa nao saber se é padrão o não.

e avaliem esses meus blocos de códigos ai e digam o q vcs acham....

valew pessoal.... e me desculpe ai qualquer coisa.... sou meio retardado as vezes.... tenho até medo de pensar que estou virando NERD.... kkkkk


valew.... lfwssss..........................



pedro.setVisible(false);>

Make your own way - <pedro> Pedro - UNIDESC 2011 </pedro>
[Email] [MSN]
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

AssemblyXP wrote:
...


pode nao ser a melhor maneira, mais é so assim que eu sei fazer....

outro exemplo, pra eu alterar uma linha selecionada uso:



para excluir a mesma coisa:


...


Sobre as implementações, AbstractTableModel é só a classe abstrata que deve ser implementada para um TableModel eficiente, o ObjectTableModel já é um TableModel generico que implementei.

E os seus códigos usando um TableModel OO (como o ObjectTableModel por exemplo) seriam o seguinte.




Para alterar



Para excluir




Muito mais simples não?

Fora o fato que voce nem precisa exibir esse campo id na tabela e deixar apenas para uso interno.

Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
AssemblyXP
Debugger
[Avatar]

Membro desde: 24/05/2009 21:15:35
Mensagens: 51
Localização: Brasil / Valparaízo-GO
Offline

carara bicho... sério mesmo q funciona....??!?

vou testar aqui e depois eu respondo....


vlws.....

Make your own way - <pedro> Pedro - UNIDESC 2011 </pedro>
[Email] [MSN]
AssemblyXP
Debugger
[Avatar]

Membro desde: 24/05/2009 21:15:35
Mensagens: 51
Localização: Brasil / Valparaízo-GO
Offline

não funcionou...


da erro nos GET.


todos as 3 linhas de código q vc passou.... listarTodos(), alterar e excluir.

tentei de tudo.... mudei o construtor e tudo, e nada...


vlw....


mais deicha essa duvida pra lah... vou procurar as objectTableModel....


flws....


valew ai a tentativa....

Make your own way - <pedro> Pedro - UNIDESC 2011 </pedro>
[Email] [MSN]
Eric Yuzo
GUJ Ranger
[Avatar]

Membro desde: 25/10/2009 20:36:30
Mensagens: 956
Localização: São Vicente - SP
Offline

O exemplo do Mark mostra como ficaria para adicionar e recuperar funcionários de uma tabela com um table model próprio (FuncionarioTableModel, por exemplo). Com DefaultTableModel, só fazendo esses laços gigantes para carregar o Vector com Strings.

Aqui no GUJ mesmo tem vários exemplos de TableModel espalhados pelos tópicos. Pelos links da assinatura do ViniGodoy e do Mark você encontra ótimos exemplos

http://www.guj.com.br/java/149034-duvidas-ao-fazer-uma-consulta#808003

http://www.guj.com.br/java/147521-inserir-dados-da-jtable-no-banco/3#799170

http://www.guj.com.br/java/132698-jtable-removendo-colunas-em-tempo-de-execucao#714736

http://www.guj.com.br/java/225793-exemplo-de-tablemodel#1156821

This message was edited 1 time. Last update was at 04/01/2011 20:39:56


O importante mesmo é ser feliz!

DevSV
[WWW]
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team