| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/02/2008 20:04:37
|
loganwlogan
JavaTeenager
![[Avatar]](/images/avatar/c8c1e7d54152d758d6c2b.jpg)
Membro desde: 31/08/2004 00:17:26
Mensagens: 182
Offline
|
Boa noite amigos
Eu preciso criar um aplicativo de desenho, estou usando um JPainel dentro de um JFrame como área de desenho, mas to tendo muito trabalho. Ouvi falar que canvas é o ideal para isso, contudo não sei trabalhar com canvas. Seria ela a melhor solução para o meu problema? E alguém poderia me indicar algum material básico para aprender a trabalhar com canvas?
Desde já agradeço
Sds
Logan
|
"Quando você olhar dentro do abismo
O Abismo olhará dentro de você"
Guerras Infinitas |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/02/2008 20:43:16
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Não. Canvas não é mais indicado para isso.
Você está fazendo certo, se pegou um JPanel e está sobrescrevendo o método paintComponent.
Há ótimos materiais para isso, segue alguns deles:
http://java.sun.com/docs/books/tutorial/2d/TOC.html
http://www.cokeandcode.com/tutorials
|
@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) 24/02/2008 21:36:16
|
loganwlogan
JavaTeenager
![[Avatar]](/images/avatar/c8c1e7d54152d758d6c2b.jpg)
Membro desde: 31/08/2004 00:17:26
Mensagens: 182
Offline
|
Bem pra falar a verdade eu to usando o método paint, sinto que ele não é exatamento o que eu necessito, mas tenho feito umas "macumbinhas" pra dar certo. To trabalhando errado né?
|
"Quando você olhar dentro do abismo
O Abismo olhará dentro de você"
Guerras Infinitas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2008 08:34:09
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Sim.
Você só pode alterar o método paint de janelas JFrame e JDialog. Nos demais componentes do Swing, é o método paintComponent que deve ser alterado.
Existe outra regra. Você também não pode alterar o estado do objeto graphics obtido no parâmetro. Assim, o modo correto de usar é:
Agora, se você está fazendo um "paint", o ideal mesmo é desenhar sobre uma BufferedImage, e depois copiar essa imagem para o painel. Isso garante que se a tela for parcialmente coberta (por outra janela, por exemplo) você possa restaurar a imagem que já foi desenhada.
Outra maneira é fazer um "corel". Ou seja, guardar os objetos desenhados (filhos da classe Shape), e permitir uma edição focada nos objetos, e não em imagem livre.
|
@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) 25/02/2008 09:40:46
|
loganwlogan
JavaTeenager
![[Avatar]](/images/avatar/c8c1e7d54152d758d6c2b.jpg)
Membro desde: 31/08/2004 00:17:26
Mensagens: 182
Offline
|
Interessante Vinícius,
Eu estava fazendo usando o método paint e um ArrayList para que apagasse quando uma janela passasse por cima da minha tela. Outra coisa que eu fiz foi criar classes de desenhos como Linha e Quadrado pois os métodos da classe Graphics não me retornavam informações como comprimentos, distância em x e y e nem as coordenadas das formas desenhadas. Mas quando tento alterálas eu tenho dificuldade, acho que as minhas classes de desenho tenham que ser filhas da classe shape, estou correto?
|
"Quando você olhar dentro do abismo
O Abismo olhará dentro de você"
Guerras Infinitas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2008 09:51:01
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
A classe Shape já tem várias filhas. Inclusive, classes para linha, quadrado, ponto, elipse e polígonos. Elas já tem métodos para calculo de distância, área, interseção, etc...
Aí, no lugar do drawRect, drawLine, etc, você usa o drawShape.
Dê uma pesquisada. No material que eu te passei ali em cima (especialmente no primeiro link), tem explicações detalhadas dela.
E sim, se você quiser criar um Shape que não seja um dos já existentes, seria interessante fazer um filho da classe Shape.
This message was edited 1 time. Last update was at 25/02/2008 09:51:34
|
@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) 25/02/2008 14:30:43
|
loganwlogan
JavaTeenager
![[Avatar]](/images/avatar/c8c1e7d54152d758d6c2b.jpg)
Membro desde: 31/08/2004 00:17:26
Mensagens: 182
Offline
|
Valeu pelas dicas Vinícius,
Só dando uma rápida olhada no material que vc indicou já me deu várias idéias para a versão 2 do meu projeto, mas tenho que terminar essa desse jeito pq preciso usá-la nesta quarta. Eu to com um problema diferente agora ta tudo pronto como eu quero, aí eu adiciono o JPanel que à paleta do NetBeans para colocá-la em um JFrane isso funciona da 1ª vez. Depois que eu fecho o NEtBeans e abro novamente ele não me deixa editar o JFrame a não ser se ele remover o JPanel que eu coloquei na paleta, e uma vez removido não consigo colocá-lo novamente em nenhum Container, ele da um erro e diz para que eu me certifique de que se trata de um componente JavaBean, alguém já viu isso? To precisando só colocar esse Panel no JFrame e fazer as devidas ligações com os botões, e tem que ser logo, tenho que entregar isso essa semana.
Sds
Logan
|
"Quando você olhar dentro do abismo
O Abismo olhará dentro de você"
Guerras Infinitas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2008 14:48:01
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Talvez seja melhor você abrir outro tópico para essa dúvida, no tópico Ferramentas, Frameworks e Utilitários, já que o assunto não se trata mais de como fazer interfaces gráficas em Java.
Eu sou usuário do Eclipse e nem tenho idéia.
|
@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 |
|
|
 |
|
|