Imagem de fundo em JPanel


Segue dois exemplos abaixo para inserir uma imagem de backgroud em um JPanel

Neste primeiro exemplo faz a imagem (“fundoPrincipal”) ser automaticamente redimencionada quando voce altera o tamanho da janela. Podendo tambem inserir uma imagem maior do que o tamanho do painel.

    /** Método que define a imagem de fundo da tela principal
     *  Com redimencionamento
     * @param g
     * @see JComponent#paintComponent(java.awt.Graphics)
     */
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g.create();
        g2d.drawImage(fundoPrincipal, 0, 0, this.getWidth(), this.getHeight(), null);
        g2d.dispose();
    }

Já neste exemplo a imagem (“fundoLogin”) fica do tamanho original e centralizada no painel sem alteração caso a janela mude de tamanho.

    /** Método que define a imagem de fundo da tela principal
     * Centralizado sem redimencionamento de imagem.
     * @param g
     * @see Graphics
     */
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        int x = (this.getWidth() - fundoLogin.getWidth(null));
        int y = (this.getHeight() - fundoLogin.getHeight(null));
        g.drawImage(fundoLogin, x, y, this);
    }

Segue uma imagem como ficaria:

É isso ae muito simples de se implementar….

Obrigado.

Guilherme B. Zarelli