Adicionar e remover Jpanel em tempo de execução [RESOLVIDO]

Boa noite pessoal, tudo certo?
Estou tendo problemas em criar e remover um Jpanel em tempo de execução, criar o Jpanel ele faz sem problemas, só que na minha tela eu tenho que direto criar o componente exclui-lo e recria-lo, isso acontece quando eu troco a seleção do item em uma jtable da minha tela e quando vou adicionar um novo registro, a inicio é quando eu abro a tela ele cria o componente uma primeira vez sem problemas, o problema acontece quando mando criar novamente o componente na tela, ele não redefine o jpanlel com os novos calores e ainda por cima joga componentes que nem estão relacionados com o processo dentro do jpanel, eu tentei o seguinte codigo :

private void gerarCusto(Custo custoRetorno){  
        CustoBD persistenciaCusto = new CustoBD();  
        List<Custo> listaCustos = new ArrayList<Custo>();  
        try{  
        pnlCusto.remove(pnlManas);  
        listaCustos = persistenciaCusto.pegarCustoCarta(custoRetorno);  
        this.pnlManas = new PainelDesenhos();  
        this.pnlManas.setListaCusto(listaCustos);  
        pnlCusto.add(pnlManas, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 280, 70));  
        pnlManas.setBounds(0, 0, 280, 70);  
        }catch(Throwable ex){  
              
        }  
    } 

o PainelDesenhos que esta no codigo é uma classe que eu criei que estende Jpanel, segue abaixo o seu codigo:

package ComponetesAdicionais;  
  
import Classes.Custo;  
import java.awt.Color;  
import java.awt.Font;  
import java.awt.GradientPaint;  
import java.awt.Graphics;  
import java.awt.Graphics2D;  
import java.awt.geom.Ellipse2D;  
import java.util.ArrayList;  
import java.util.List;  
import javax.swing.JPanel;  
  
  
public class PainelDesenhos extends JPanel{  
      
    private List<Custo> listaCusto = new ArrayList<Custo>();  
    private int altura = 0;  
    private int largura = 0;  
    private final int ALTURADESENHO = 25;  
    private final int LARGURADESENHO = 25;  
    private final int TAMANHOFONTE = 12;  
      
    @Override  
    protected void paintComponent(Graphics g) {  
        for (int i =0; i < this.listaCusto.size(); i++){  
            Color cor1 = Color.decode("#"+this.listaCusto.get(i).getListaManas().get(i).getHexadecimal());  
            int proximoIndice = 0;  
            if (this.listaCusto.size() != i+1){  
                proximoIndice = i + 1;  
            }else{  
                proximoIndice = 0;  
            }  
            if ((this.listaCusto.get(i).getCodigo() == this.listaCusto.get(proximoIndice).getCodigo()) && (proximoIndice != 0)){  
                i++;  
                Color cor2 = Color.decode("#"+listaCusto.get(i).getListaManas().get(i).getHexadecimal());  
                GradientPaint circuloGradiente = new GradientPaint(50,60,cor1,100, 0,cor2);  
                ((Graphics2D)g).setPaint(circuloGradiente);  
                ((Graphics2D)g).fill(new Ellipse2D.Double(this.largura,this.altura,this.LARGURADESENHO, this.ALTURADESENHO));  
            }else{  
                g.setColor(cor1);  
                g.fillOval(this.largura, this.altura, this.LARGURADESENHO, this.ALTURADESENHO);  
            }  
            g.setColor(Color.BLACK);  
            g.setFont(new Font("Tahoma", Font.BOLD, this.TAMANHOFONTE));  
            g.drawString(String.valueOf(listaCusto.get(i).getNumero()),this.largura + 10, this.altura + 40);  
            this.largura = this.largura + this.LARGURADESENHO +5;  
                if ((this.altura + this.ALTURADESENHO) >= (this.getWidth())){  
                    this.altura = this.altura + this.ALTURADESENHO + this.TAMANHOFONTE;  
                }  
        }  
    }  
      
    public void setListaCusto(List<Custo> listaCusto){  
        this.listaCusto = listaCusto;  
    }  
      
}  

alguem da um help aew s possivel
vlw

tenta colocar dentro do metodo paintComponent a invocação do metodo pai super.paintComponent(g) pode ser isso que esteja faltando.

[]'s

Veja se seu pnlCustos está com o LayoutManager correto para utilzar:

 pnlCusto.add(pnlManas, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 280, 70));   

Provavelmente é necessario um:

pnlCusto.setLayoutManager(new AbsoluteLayout());

a solução de usar o super deu certo, agora preciso conseguir remover o eu jpanel personalizado da tela, tentei usar o método remove, mas não funcionou, sera que teria como me explicar também sobre esse comando super, gostaria de entender o que aconteceu no meu código que colocando ele funcionou

[quote=junior-kun]a solução de usar o super deu certo, agora preciso conseguir remover o eu jpanel personalizado da tela, tentei usar o método remove, mas não funcionou, sera que teria como me explicar também sobre esse comando super, gostaria de entender o que aconteceu no meu código que colocando ele funcionou
[/quote]

sobre o comando super faz com que o metodo “original” seja executado, e esse metodo eh o responsavel por fazer toda a pintura da tela. Como vc mudou ele e deixou de usar o “original” ele parou de pintar corretamente.

sobre o remove, tente dar um repaintAll depois do remove, acho que assim resolve tbm, mas nao tenho certeza :confused:

[]`s

o comando repaint deu certinho aqui cara, vlw aew
vc também saberia me indicar algum conteudo pra estudar sobre jasper reports, nunca tive contato, tem alguma coisa pra me indicar pro meu estudo inicial ?

[quote=junior-kun]o comando repaint deu certinho aqui cara, vlw aew
vc também saberia me indicar algum conteudo pra estudar sobre jasper reports, nunca tive contato, tem alguma coisa pra me indicar pro meu estudo inicial ?[/quote]

Material gratuito não conheço nenhum, mas a Caelum está com um curso online em um preço bem acessível. Talvez seja uma opção.
http://www.alura.com.br/cursos-online-java/jasper-reports

[]'s