JScroll em JFrame desenhado com paint(Graphics g) [RESOLVIDO]

12 respostas
VantuilJose

Pessoal, tô desenhando uma imagem direto no Graphics de um JFrame, no paint(Graphics g)…
Só que, quando a imagem é maior que o JFrame não estou conseguindo colocar Scroll nele…
Alguém tem alguma idéia?

12 Respostas

Hebertbc

Eu fiz um bagulho parecido uma vez eu coloquei um jscrollpane em um jlabel e setei o icone do jlabel. (POG) :smiley:

Acredito que o correto sera vc criar um jscrollpanel com um jpanel e desenhar nele.

VantuilJose

O certo era fazer no JPanel :oops: mas…
Só que no JPanel não funciona também… Mesmo eu colocando o JScrollPane e adicionando o JPanel a ele, quando o paintComponent() é chamado ferra com tudo…
Hebertbc, você tem o código que fez?

Hebertbc

Hehe não repara nos cabritos… pq na epoca eu botei na cabeça “vou aprender java”…

O esquema é simples… criei um jscrollpane, coloquei um jlabel dentro dele e setei o icone do jlabel.

VantuilJose

Valeu pelo código…
Mas ele não pode me ajudar muito…
Eu tenho que desenhar sobre a imagem, o usuário pega o mouse e pode fazer bolinhas e quadradinhos em cima da imagem…
Então preciso de fazer isso no paintComponent…
Vc tem mais alguma idéia? alguém tem?

Hebertbc

Olha acredito que para desenhar vc tem que alterar o metodo paint… fiz um bagulho parecido uma vez… vamos ver se acho o codigo aki

VantuilJose

É, eu sobrescrevo o paintComponent(), eu permito que o usuário desenhe tal, isso já tá pronto, mas só na parte da imagem que apare no componente…
Eu queria mais que isso…
Preciso que ele possa desenhar por toda a imagem… Ela toda deve aparecer no componente…

ViniGodoy
  1. Desenhe no JPanel (ou num JComponent, se a imagem não for container de componentes);
  2. Ajuste o setPreferredSize() desse JPanel para o tamanho total da imagem;
  3. Coloque o JPanel num JScrollPane e o JScrollPane sobre o JFrame.
VantuilJose

ViniGodoy, será que o setPreferedSize() resolve?
Vou tentar na hora do almoço, hehehe…
Eu desenho a mesma imagem toda hora, o usuário arrastou o mouse, eu tenho que desenhar a imagem, todas as formas que ele já desenhou, e a forma que ele está desenhando… Tem alguma recomendação em relação a isso?

ViniGodoy

Resolve sim. O ScrollPane usa o PreferredSize para decidir quando as scrollbars entram ou não.

Quanto a ter que redesenhar tudo, nenhuma recomendação. É assim mesmo que funciona. Só tome cuidado para não carregar arquivos ou fazer outras operações lentas do tipo dentro do método paintComponent.

VantuilJose

Ah blz… Tava com medo de fazer isso…
Mas já tomei cuidado, sem criar muitos objetos, utilizando BufferedImage pra evitar flip e tals…
Estava lendo um livro que porcamente traduzido seria: “10 coisas que nunca fará no trabalho”, kkkk, aprendi um monte de coisas legais lá que poderei utilizar no meu projeto de conclusão de curso…

Depois posto o que aconteceu com o preferedsize…

Valeu…

ViniGodoy

Dá uma lida na área de Java 2D do meu site. Explica bastante coisa sobre uso de BufferedImage, page flipping, double buffering, entre outras coisas.

VantuilJose

Deu certinho…
Valeu ViniGodoy, era só isso mesmo… Dando o setPrefferedSize() no panel com as dimensões da imagem deu tudo certo… :wink:
Depois de apanhar bastante… hehehehe
O material no seu site é muito bom… Tô lendo tudo… Valeu…

Criado 14 de maio de 2010
Ultima resposta 18 de mai. de 2010
Respostas 12
Participantes 3