Bom dia pessoal!
Gostaria de pedir um auxílio a vocês. Criei uma classe no meu projeto que insere uma imagem no JDesktopPane. Essa imagem muda cada vez que o usuário entra no sistema.
Só que gostaria de fazer algo como acontece no Windows 7, ou seja, fazer com que depois de abrir o sistema a imagem do JDesktopPane mude a cada 3 minutos por exemplo.
Como poderia fazer isso? Abaixo segue a minha classe que insere a imagem no JDesktopPane e faz com que ela se altere a cada logon.
Aguardo uma ajude vocês. Obrigado!
package GUI;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import static java.lang.Thread.sleep;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import java.util.Random;
class BackgroundedDesktopPane extends JDesktopPane {
private Image img;
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension tamTela = kit.getScreenSize();
//Pegando a largura total da tela
int larg = tamTela.width;
//Pegando a altura total da tela
int alt = tamTela.height;
int minhaLargura= larg;
int minhaAltura = alt-150;
public BackgroundedDesktopPane() {
Random gerador = new Random();
int numero = gerador.nextInt(19);
try {
img = javax.imageio.ImageIO.read(new java.net.URL(getClass().getResource("wallpapers/wallpaper"+numero+".jpg"), "wallpaper"+numero+".jpg"));
} catch (Exception ex) {
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (img != null) {
//Dimension dimension = this.getSize();
//int x = (int)(dimension.getWidth() - img.getWidth(this)) / 2;
//int y = (int)(dimension.getHeight() - img.getHeight(this)) / 2;
//g.drawImage(img, x, y, img.getWidth(this), img.getHeight(this), this);
//Mandando o JFrame utilizar suas dimensões
//setSize(minhaLargura,minhaAltura);
g.setColor(Color.WHITE); // define a cor de fundo branco
g.fillRect(0, 0, getWidth(), getHeight()); // define a cor de fundo branco
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
//g.dispose();
} else {
g.drawString("Imagem nao encontrada", 50, 50);
}
}
Para chamar essa classe, vou em “personalizar código” do JDesktopPane e insiro a seguinte linha:
panel = new BackgroundedDesktopPane();
onde panel é o nome do JDesktopPane.