JPanel com zoom

9 respostas
Jean_Utf

Boa tarde,

Existe algum componente java que tenha as características de um panel que plota mapa?
Por exemplo, zoom in e out, e movimentar o mapa com um “clique + segura + arrasta”

O Mapa que ploto é utilizando Java2d (drawPolygon).

To pesquisando sobre swingx e swingx ws, lá tem algo sobre mapa, mas por enquanto só sei como pegar da web, tipo google maps, passando uma url.

Valeu.

9 Respostas

Marky.Vasconcelos

Bem, não sei anda pronto, mas voce pode fazer isso facilmente, o zoom aplicando um affinetransform ao Graphics2D, e o arrastar e soltar voce deve modificar as coordenadas de pintura de acordo com o drag do mouse.

Jean_Utf

Mas com o zoom in, alguns polígonos “sumirão”, como num mapa qualquer.
Como se eu tivesse um panel gigante, e só uma parte deste aparecesse. Quando eu arrastasse, o panel se moveria.

Mas com um panel comum não sei se isso é factível.

Acredito que já haja algo pronto… onde eu só passe meu array de coordenadas, e ele já plote, com essas características de mapa mesmo.

Valeu.

Marky.Vasconcelos

Com um JPanel não tem isso não, eu não disse que isso seria simples, disse que seria facil.

Voce só tem que modelar tudo isso corretamente.

Talvez uma API de grafos possa te ajudar, não tenho certeza.

Jean_Utf

Grafos?

Acho que não. Só preciso de um botão de zoom em um panel com polígonos plotados.
E que eu consiga movimentar esse mapa.

Mas tá tenso achar. Tenho certeza que já deve existir isso em algum lugar.

Valeu!

Marky.Vasconcelos

Eu já implementei isso em um MapBuilder(para jogos), e realmente voce tem que fazer o que eu disse, no arrastar do mouse, movimente todos seus pontos naquele sentido.

Jean_Utf

Consegui fazer utilizando um JPanel.

Usei o Graphics2D para pintar os polígonos (como já era antes) e os métodos scale, translate e createInverse do AffineTransform.

Scale para o zoom com o scroll do mouse e translate para o posicionamento (clicar e arrastar).
Para o primeiro usei o evento mouseWheelMoved, e o segundo mouseDragged, para fazer a lógica de atualização.

Valeu.

Até mais.

Marky.Vasconcelos

Era isso mesmo que eu imaginava, parabéns!

Jean_Utf

Valeu.

Achei uma api que faz isso também. OpenMap.
Tem todos os componentes para trabalhar com mapas, prontos. Show de bola.
Tem até um ZoomPanel… haha.

Mas não posso dizer se é bom ou não porque não usei. Mas me parece completão.

Mas vou agregar no meu sistema apenas no futuro.

Valeu ae… até mais.

AssemblyXP

Jean_Utf:
Consegui fazer utilizando um JPanel.

Usei o Graphics2D para pintar os polígonos (como já era antes) e os métodos scale, translate e createInverse do AffineTransform.

Scale para o zoom com o scroll do mouse e translate para o posicionamento (clicar e arrastar).
Para o primeiro usei o evento mouseWheelMoved, e o segundo mouseDragged, para fazer a lógica de atualização.

Valeu.

Até mais.

Opa, beleza… tem como postar a classe, ou so a parte que coloca zom e clica e arrasta a imagem no painel para ter-mos uma referencia??

Criado 23 de agosto de 2010
Ultima resposta 28 de mai. de 2012
Respostas 9
Participantes 3