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

Anúncios

2 comentários sobre “Imagem de fundo em JPanel

  1. Não é possível mostrar o resto do código? Apenas com isso não consigo implementar

    • Não tem muito segredo, só faltou carregar a imagem, veja o JPanel a seguir:

      package codigos.gui;
      
      import java.awt.Graphics;
      import java.awt.Image;
      import javax.swing.ImageIcon;
      
      public class Login extends javax.swing.JPanel {
      
          private Image fundoLogin;
      
          public Login() {
              fundoLogin = new ImageIcon(getClass().getResource("/imagens/fundo.png")).getImage();
          }
      
          @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);
          }
      }
      

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s