| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 04:30:06
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Tô fazendo um tutorial para o GUJ sobre como usar o HSQLDB 2.0(tem um aqui, mas ele é por cima, não faz nenhuma operação-search,update,insert,delete-no banco), e não quero perder tempo construindo N tablemodels.
Testei hoje o ObjectTableModel(by MarkyVasconcelos) e parece bem bacana.
Ao que interessa:
Num momento da App, o usuário entra num JFrame, e seleciona numa Combo o item que ele quer preencher numa JTable(logo abaixo dessa combo).Por Exemplo, digamos que o user selecionou "Atividade" na combobox.Aparecerão no JTable, 4 colunas(podem ser várias linhas):Atividade,frequência,minutos,média
As colunas Atividade e Média, já serão automaticamente preenchidas(Vem da tabela "Atividade"),
as de frequência e minutos serão preenchidas pelo usuário.Exemplo:
A F Min Méd
Cinema 120
Teatro 100
Perguntas:
1-Como eu faço o "binding" usando o ObjectTableModel para a utilização da tabela Usuario_atividade(que é a JTable que o usuário vai preencher) com Atividade(um model pegando alguns dados de outro)?Essa tabela será salva depois que o usuário preencher os campos.Sim, se tiverem 10 Atividades, serão 10 registros que serão salvos na tabela Usuario_atividade em sequência.
2-Dá para fazer um Formatter ter controle individual da célula comparando com outra?
Imagine que ele esteja preenchendo a coluna "Min", ao passar para a debaixo, ocorrerá uma
verificação que compara o valor que o usuário digitou com a célula respectiva na coluna "Med"(ambas BigDecimal).
Se for menor, fica(a célula) vermelha, azul se for maior.
E antes que perguntem, sim JTable não é um DataGrid(deve ser evitado...), mas no caso serve para ilustrar o que eu quero mostrar(inclusive uns erros de inserção no BD).
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 11:09:57
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Então, 1° voce devia ter um modelo que representa-se esse Usuario_Atividade com os atributos que voce quer para mostrar na JTable, e depois de mudar os valores nela voce deve pegar a lista de todos os itens e fazer a inserção/alteração ou qualquer outra coisa que quiser fazer com os dados.
Ou voce pode ter uma classe Usuario que tenha uma tributo Atividade, o model suporta voce pegar os dados dos atributos das classes e ainda altera-los pelas celulas da tabela.
2°, não da pra fazer isso, do modo que fiz, o formatter sabe apenas que um dado está vindo do model e ele precisa mandar formatado para a tabela ou vindo da tabela e converter para o tipo de dado original para ser colocado no model.
|
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! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 14:07:03
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
1-Na verdade, o model UsuarioAtividade só existirá mesmo depois do usuário preencher a JTable.Atividade está assim: id,Atividade, media
Usuario_Atividade:id,Atividade,frequência,minutos,média,Date
Só as 4 serão mostradas,não há uma forma de injetar os dados?Poe um pequeno exemplo.
2-Eu já fiz, só que não fica muito bonito, se pudesse interar entre Formatters iria ser punk.Usando um método porco, é só fazer assim:
Vou interando entre uma coluna e outra comparando o valor de uma célula com outra.
Se for menor:
funciona,mas...it tastes like gambiarra!
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 14:52:53
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
É, não tem como voce injetar desse jeito.
O que voce pode fazer é montar o é mesclar o Atividade e colocar nos models correspondentes em UsuarioAtividade, e mostrando o model já vai ter os valores que voce quer.
E ta ai, duas boas dicas para eu melhorar o model.
Só me falta tempo pra mudar =/
Ironlynx wrote:
funciona,mas...it tastes like gambiarra!
Pior seria se fosse gambiarra e com DefaultTableModel.
Hehe
This message was edited 1 time. Last update was at 25/08/2010 14:54:56
|
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! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 15:23:27
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
o é mesclar o Atividade e colocar nos models correspondentes em UsuarioAtividade, e mostrando o model já vai ter os valores que voce quer.
Mas usando o ObjectTableModel como faço isso?
Dá para fazer um Atividade a = atividadeModel.getValue(3);//pegar média
e ir colocando em UsuarioAtividade?Fiquei meio perdido como eu notifico meu model principal(UsuarioAtividade) de que ele vai pegar esses valores de outro(ou de uma tabela do BD, por exemplo).
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 15:43:31
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Então, pensei em fazer isso fora do model.
Voce pode fazer quando carrega do BD. Algo como:
E depois mandar listar a lista que isso retorna.
Ou então usar o query by example do hibernate (que vou ficar te devendo exemplo).
|
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! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 16:01:21
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
E depois mandar listar a lista que isso retorna.
É, eu pensei da mesma forma.O problema dessa abordagem é que eu tenho que permitir que alguns campos sejam nulos para serem preenchidos depois.(Mas me parece a melhor forma, pois o model virá todo estruturado)
Não vou usar Hibernate.Tô no velho e bom JDBC para poder mostrar alguns erros de SQL para os usuários(como as famosas aspas simples/duplas...).
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 16:40:06
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
Mas sua dica ficou gravada, fazer umas magias negras pra copiar os atributos em alguns lugares. Hehe
Imaginei que voce provavelmente não usava hibernate por isso não postei o exemplo (E pra falar a verdade nem sei usar o Example direito).
|
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! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 18:43:50
|
Ironlynx
Moderador
![[Avatar]](/images/avatar/93d65641ff3f1586614cf2c1ad240b6c.jpg)
Membro desde: 02/05/2003 01:06:41
Mensagens: 3515
Localização: The other side of the screen
Offline
|
Marky, onde estão os Docs da sua API?Quero saber quais os Formatters estão por padrão(por exemplo, meus números são bigdecimal, tenho que criar um BigDecimalFormatter para o usuario editar na tabela ou tem pronto?)...
|
Não basta persistir...tem que prevalecer!
Ironlynx
Anarquista de Sistemas
http://osereojava.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/08/2010 11:26:27
|
Marky.Vasconcelos
Moderador
![[Avatar]](/images/avatar/04940fadf3702cbd84b7a48161037c4f.png)
Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline
|
É.. docs :oops: esta faltando mesmo.
E o unico Formatter que tem é o DefaultFormatter.
É que quando eu fiz, eu não sabia se eu já implementava os formatters mais utilizados ou deixava para customizar, no final, deixei para customizar. Mas implementar varios deles é facil, e da até para colocar com default os comuns.
This message was edited 1 time. Last update was at 26/08/2010 11:26:51
|
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! |
|
|
 |
|
|