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

Help DEV – Analista desenvolvedor Java / Android
https://helpdev.com.br/zarelli

Imagem de fundo em JPanel

2 pensou em “Imagem de fundo em JPanel

    1. 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 uma resposta para Guilherme Biff Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Rolar para o topo