Sobrescrer paintComponent

3 respostas
josimarsis

Galera eu fiz um componente JPanel com efeito degrade funcionou blz sobrescrevendo o método paintCompont porem quando
coloco qualquer componente (JLabel, JButton etc) sobre o meu JPanel eu não consigo visualizar alguem pode me ajudar? segue o codigo do meu componente.

package Util.Componentes;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;

public class MyPanel extends JPanel{


    @Override
    public void paintComponent(Graphics g) {
        super.paint(g);

        Graphics2D g2d = (Graphics2D) g;
        int height = this.getHeight();
        int width = this.getWidth();

        Color top = new Color(246, 251, 251);
        Color botton = new Color(0, 118, 163);

        GradientPaint gradient = new GradientPaint(0, 0, top, 0, height, botton); 
        g2d.setPaint(gradient);

        g2d.fillRect(0, 0, width, height);
        this.updateUI();
    }
}

3 Respostas

ViniGodoy

Existem diversos erros no seu código:

  1. Você deveria estar chamando super.paintComponent(), no lugar de super.paint();
  2. Você não deve usar o objeto graphics diretamente. Ao invés de:

Faça

E ao final do seu método faça:

  1. Você não deve chamar métodos como invalidate(), updateUI() e repaint() de dentro dos métodos começados pela palavra “paint”.
ViniGodoy

Outra coisa, você poderia postar os tópicos relacionados a interface gráfica no fórum de interface gráfica? Acho que o povo vai te responder mais rapidamente por lá.

josimarsis

Deu certo Vini! Obrigado…

Criado 30 de setembro de 2009
Ultima resposta 1 de out. de 2009
Respostas 3
Participantes 2