Problemas ao desenhar sobre um JScrollPane

5 respostas
T

Olá pessoal,

Eu estou com o seguinte problema:

Tenho que desenhar alguns pontos sobre uma imagem que está sendo exibida em um JScrollPane, que por sua vez está localizado em um JFrame. No entanto, ao marcar o ponto, ele fica fixo em um local, não se deslocando junto com a imagem quando utilizo a barra de rolagem.

Pelo que eu entendi, o ponto está sendo desenhado sobre o JFrame, para que tudo funcionasse corretamente ele deveria ser desenhado no JScrollPane. Para isso, eu deveria utilizar o objeto Graphics do JScrollPane, mas não sei como fazer isso… :cry:

Alguém poderia me dar uma sugestão?

5 Respostas

ViniGodoy
  1. Crie uma classe filha de JComponent;
  2. Faça o método setPreferredSize dela retornar o tamanho total da área de desenho, não só o que será visto;
  3. Sobrescreva o método paintComponent (não o paint) e use o objeto Graphics de lá para fazer a pintura.
  4. Coloque seu componente sobre o JScrollPane.
T

Obrigado pela dica… :smiley:

Qndo vc diz “colocar o componente sobre o JScrollPane”, quer dizer usar um JLayeredPane, não é?

B

Não é usar um JLayeredPane e sim apenas passar o seu objeto para o construtor de JScrollPane:

http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html

Se não puder passar para o construtor, use setViewportView:

http://docs.oracle.com/javase/7/docs/api/javax/swing/JScrollPane.html#setViewportView(java.awt.Component)

T

Muito obrigado, funcionou!!! :smiley:

T

Oi mais uma vez…

Eu tinha usei o jlayeredPane, funcionou em parte… mas ocorreu um problema ao usar a barra de rolagem, pois o ponto ficava fixado na camada superior e não na imagem…

Tentei fazer o que vc sugeriu passando a classe que extends de JComponent como parâmetro para o JScrollPane, mas não aconteceu nda em relação aos pontos na tela, além da abertura da imagem ficar muito lenta.
Deixa eu explicar direito o que quero:

  1. Abrir uma imagem em um JScrollPane (para isso, já estou usando o método setViewPortView, passando um JPanel com a imagem) [isso já foi feito];
  2. Sobre essa imagem, quero marcar uma série de pontos…

Foi isso que vc intendeu pra primeira vez?

Criado 27 de novembro de 2011
Ultima resposta 29 de nov. de 2011
Respostas 5
Participantes 3