JDesktopPane Imagem de fundo atualizando em tempo de execução [RESOLVIDO]

Boa noite pessoal :slight_smile:

Alguém saberia me explicar o que é preciso fazer para atualizar uma imagem no JDesktopPane em tempo de execução? Por exemplo eu tô com o programa aberto e o usuário quer colocar uma imagem no fundo então ele vai la e clica no menu pra alterar a imagem, seleciona a imagem mas ela não atualiza.

Carregar uma imagem na hora de abrir o sistema não é problema, o problema é carregar a imagem dentro do JDesktop em tempo de execução.

Brigado x]

Como voce esta colocando essa imagem no JDesktopPane?

Tô colocando a imagem em um JLabel que carrego no JDesktop mas eu tento atualizar a imagem no JLabel e não consigo :X

Seria mais interessante sobreescrever o método paintComponent da seu JDesktopPane e desenhar a imagem por lá.

Encontrei algo sobre falando sobre isso :slight_smile:
Vô da uma olhada acho que entendi como fazê-lo :smiley:

Valeu pela respota.

Bom, eu consegui sobrescrever o método paintComponent do JDesktopPane até abre mostrando a imagem e tal, o problema agora é sobrescrevê-lo em tempo de execução. Eu tentei de um jeito aqui e nao deu muito certo a imagem só atualiza se minimizar e restaurar a janela :X

Como eu posso sobrescrever esse método em tempo de execução?

Sobrescrevi o método e ficou assim:

[code]JDesktop = new JDesktopPane() {
public void paintComponent (Graphics g){
ImageIcon img = new ImageIcon(“imagem.jpg”);
g.drawImage(img.getImage(),
this.getWidth()/2 - img.getImage().getWidth(this)/2,
this.getHeight()/2 - img.getImage().getHeight(this)/2,
null);

            super.paintComponent(g);
        }};[/code]

Mas como eu faço pra recarregar quando a imagem mudar?

Eu já tentei algumas maneiras:

Graphics g = PrincipalView.JDesktop.getGraphics(); PrincipalView.JDesktop.update(g);

e

a primeira da certo na maioria das vezes mas tem hora que buga, a segunda nao faz nada.

Qual seria a maneira correta pra recarregar quando a “imagem.jpg” mudar?

Então… voce já pode deixar de usar ImageIcon.
Vou te passar um exemplo.

public class Main{
BufferedImage image;
JDesktopPane jdesktop;
public Main(){
image = ImageIO.read(new File("imagem.jpg");
jdesktop = new JDesktopPane() {
            public void paintComponent (Graphics g){
                super.paintComponent(g);
                Graphics2D g2d = (Graphics2D) g.create();
                g2d.drawImage(image,
                    this.getWidth()/2 - image.getWidth()/2,
                    this.getHeight()/2 - image.getHeight()/2,
                    null);
                g2d.dispose();
            }};
}
public void setImage(String image){
image = ImageIO.read(new File(image));
jdesktop.repaint();
}
}

Falta uns try/catchs para funcionar.

Valeu mano XD

Deu certinho aqui, desculpe a enxeção ^^

eae galeraaaaa!!! Aproveitando este tópico de imagens…

Pessoal estou com um problema, tenho um Jlabel com um tamanho pré-definido, e estou usando um JFileChooser para pegar a foto.
Quando eu a seleciono, gostaria que , não importando o tamanho dela, ficasse do tamanho do meu Jlabel Original!!

Mas, ou ela fica bem menor, ou fica muito grande!!

Como posso resolver isso??

existe algum método que pegue o tamanho do icone e formate de acordo com o tamanho do Jlabel???

Preciso disso urgente galera!!!

Valeusssss!!

Voce pode sobreescrever o método paintComponent como ele fez mas no lugar de colocar image.getWeight() e image.getHeigth() voce passa valores fixos que a imagem sera desenhada em uma escala menor.

Opaaa

cosegui cara!!

valeuss!

andresmafra

Sempre que vc conseguir solucionar uma dúvida atravéz do GUJ, é interessante que post o código pois pode ser a dúvida de outras pessoas; assim evita-se novos posts com as mesmas dúvidas saca?

Um abraço!

Estou precisndo da mesma coisa que vc fez, tem como vc postar seu código?