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