Olá pessoal, estou com um problema, estou colocando uma imagem em um jpanel
consigo colocar a imagem nele blz, o que acontece é que depois de colocada a imagem
ela fica, mas derrepente depois de um tempo, se minimizar a tela e voltar (Algumas vezes)
o jpanel volta ao original e a imagem simplesmente some, já verifiquei e nada mais mexe na imagem
e nem no jpanel, o que será que pode estar acontecendo?
Tem algum jeito de deixar a imagem permanente?
estou usando o seguinte para desenhar a imagem no jpanel:
pnlimagem.getGraphics().drawImage(oImagem,0,0,null);//Desenha a imagem redimensionada no panel
Onde pnlimagem é o jpanel e oImagem é o objeto que passo para ser desenhado no jpanel
Oi.
Pesquise sobre o método repaint() de JPanel. Acho que ele pode ser aplicado no seu caso.
D
Delphing
Opa
Testei o repaint() mas ficou pior, quando faço o repaint() ele refaz o desenho mas refaz como o original do panel, ele não repinta a imagem que estava.
Dae vi também outro método o: pnlimagem.setIgnoreRepaint(); usei ele, mas também não fez efeito, a imagem sempre desaparece quando a janela é manipulada…
Alguma outra dica?
ViniGodoy
Oi.
É assim mesmo.
O swing não tem nenhuma responsabilidade de salvar a imagem que você desenhou no JPanel. Quando você minimiza e maximiza um painel, ou quando vc chama repaint, ou quando algo sobrepõe ao seu JPanel, o Swing chama o método paintComponent do JPanel novamente. E é você que tem a reponsabilidade de refazer tudo o que tinha pintado lá dentro.
Como resolver o problema, então? Bem, há duas formas:
Se você tem a informação do que deve ser pintado em objetos, repinte-os;
Ao invés de pintar diretamente no JPanel, pinte num BufferedImage. Depois, no método paint, simplesmente pinte essa BufferedImage no JPanel novamente.
Ah sim, a forma que vc usou o getDrawGraphics() está completamente equivocada. Você só deve pintar diretamente os componentes Swing se estiver fazendo um componente novo, ou complementando uma funcionalidade num componente já existente (como é o caso do JImagePanel, do link ali em cima).
Andre_Brito
Oi.
Eu aconselho você a fazer a segunda opção que o ViniGodoy falou.
Você usa um BufferedImage para lidar com a imagem. Quando for chamar o paintComponent você usa o método getGraphics() no parâmetro da chamada. É o jeito mais fácil e coeso, porque lida com uma coisa separada da outra. Além disso, mudar uma imagem ou selecionar outra não vai te trazer problemas.
Abraço.
D
Delphing
Gente tô ficando doido com essa dificuldade, já estou com um BufferedImage e não consigo desenhar ele no painel, qual método devo usar?
Estou usando assim: pnlimagem.paint(oImagemTela.getGraphics());
onde pnlimagem é meu panel e o oImagemTela é o BufferedImage ele aceita o código mais não pinta nada no panel, o que pode estar acontecendo?
Tenho outro objeto que é do tipo Image teria como pintar ele no panel?
Vlw pessoal.
D
Delphing
Desculpe o post duplicado mas ninguém tem uma dica ae?
Vlw pessoal
H
hyaller
Cara eu n manjo muito, mas tenho uma nocao e estou fazendo a mesma coisa que vc, e pra isso eu modifiquei uma classe onde uso ImageIcon. Ve se nao resolve o seu problema:
PainelGraficoimagem=newPainelGrafico();//Paraumaimagempredefinidadentrodoconstrutor//ouPainelGraficoimagemoriginal=newPainelGrafico("caminho da imagem");JPanelexemplo=newJPanel();exemplo.add(imagem);