Imagem como background de um JPanel

3 respostas
felixcomputer

Gostaria de saber se é possivel colocar uma imagem como fundo de um JPanel, eu naum quero saber como inserir imagens, mas se é possivel colocar componentes (JTextField, JLabel) e por conseguinte diminuir a opacidade da imagem,

Qualquer dica será bem vinda,
Obrigado

3 Respostas

A

Olá,

Espero que tenhas lhe entendido, mas tenta fazer algo tipo isso:
//***Classe onde estão os painéis, frames, etc…

/Aqui é apenas um metodo do tipo JPanel que instancia um painél e adiciona a ele a imagem./

private JPanel panel() {

JPanel panel = new JPanel();

panel.add(new ImagePanel());

return panel;
}
//*** Imagem **********************************

class ImagePanel extends JPanel{

/** Creates a new instance of ImagePanel */

public ImagePanel() {

image = Icons.getImage(Icons.AGENDA2);

MediaTracker tracker = new MediaTracker(this);

tracker.addImage(image, 0);

try {

tracker.waitForID(0);

} catch (InterruptedException e) {}

}
private Image image;
    
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        g.drawImage(image, 0, 0, 200, 600, this);
      
    }     
}

Um abraço,
Aislan

ViniGodoy

Dá uma olhada aqui:
http://www.guj.com.br/posts/list/56248.java#295271

Deixei uma classe JImagePanel implementada lá que faz exatamente isso. E você ainda pode escolher entre deixar a imagem centralizada, estica-la ou deixa-la lado-a-lado, caso o painel seja maior que a imagem.

Agora, para reduzir a opacidade de uma imagem, use o método:
private BufferedImage applyAlpha(BufferedImage pb, float alpha) {
   BufferedImage img = new BufferedImage(pb.getWidth(), pb.getHeight(), BufferedImage.TYPE_INT_ARGB);
   Graphics2D g2 = (Graphics2D) img.getGraphics().create();
        
   g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
   g2.drawImage(pb, 0, 0, null);
   g2.dispose();
        
   return img;
}

Onde alpha é um valor entre 0 e 1.0, sendo que 1 representa 100% opaco e 0 totalmente invisível.

O método não altera a imagem original, mas gera uma cópia dela com o alpha aplicado. Essa cópia é retornada pela função.

Aplique isso na imagem, antes de envia-la para o JImagePanel.

felixcomputer

Valeu Vini, essa classe é muito bacana!! Obrigado
Obrigado tbem ao AislanMan

Criado 11 de abril de 2007
Ultima resposta 11 de abr. de 2007
Respostas 3
Participantes 3