Você tem que usar um TexturePaint.
- Primeiramente, você cria um retângulo, com as dimensões que a imagem terá.
- Você cria um TexturePaint, usando a imagem e a âncora;
- Associe o seu contâiner ao seu objeto graphics.
- Depois você pinta o fundo do seu container.
Exemplo (esse exemplo considera que você possui o atributo img, um BufferedImage já carregado com a imagem que você quer):
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D)g.create();
Rectangle2D anchor = Rectangle2D.Double(0, 0, img.getWidth(), img.getHeight());
TexturePaint paint = new TexturePaint(img, anchor);
g2d.setPaint(paint);
g2d.fillRect(0, 0, getWidth(), getHeight());
g2d.dispose();
}
PS: Não testei o código, não tenho certeza que funcione. Talvez tenha um outro outro bug, mas o princípio é esse aí.
Saudações, galera.
O meu grande sonho, depois de comprar um fusca amarelo e de usar uma sandália Havaianas cujo cabresto não saísse na primeira topada, é encontrar a solução para estes problemas (brincadeira) :
Eu tenho um container e quero pôr uma imagem no fundo dele, de modo que essa imagem fosse o “papel de parede” desse container. Já consegui fazer isso, mas de modo que a imagem modificasse suas dimensões conforme a janela modificasse as suas - isto é: o tamanho da figura não era fixo.
O que eu quero fazer é pôr uma textura no fundo dos meus containers e outros componentes - colocar, por exemplo, a imagem de um gramado de 35x35 pixels e conseguir que ela seja repetida (e não aumentada) até cobrir um JPanel de 300x400 pixels.
Já agradeço só pelo ineresse. Valeu, cês são “pai d’égua” ( isso, no Ceará, é um elogio).
Foi mal, ams eu testei e não funcionou.
Você [ ou alguém ] pode ao menos me indicar um local onde eu possa pesquisar isso?
:lol: