[RESOLVIDO] Duvidas com o alpha em um desenho Graphics

gente eu tô com a seguinte duvida:
eu tenho o seguinte metodo:

public void changeColor(Color colorTarget, Color colorFont, Color colorGrid) {
        int q=0;
        //removendo componentes
        layeredPane.removeAll();
              Iterator iterator =listTarget.iterator();
              for(int i=0;i<listTarget.size();i++){
                  Target aux = (Target) iterator.next();
                  if(aux.equals(listTarget.getLast())){
                       q=1;
                }
                
                 //Criando um novo JLayer de Target
                JLabel newTarget = new JLabel();
                System.out.println(q);
                metodos.drawTarget(colorTarget,q);
                newTarget = metodos.getTarget();
                newTarget.setLocation(aux.getPosTargetX() , aux.getPosTargetY());
                newTarget.setVisible(true);
                //inserindo as layers na layeredPane
                               layeredPane.add(newTarget, new Integer(atualizaContLabels()));
                scrollImage.validate();
                System.out.println("---------------");
        }//end while
    }//end metodo

Esse metodo deveria simplesmente remover todas as minhas layers, e depois ir criando para cada objeto da minha listTarget um novo desenho. E cada desenho deveria ser inserido em uma layer diferente. Sendo que apenas o ultimo objeto da minha lista deveria ter seu desenho criado com o aplha 100% e os demais com alpha 50%, mas isso não acontece…

Na classe Metodos o metodo drawTarget eh assim:

public void drawTarget(Color color, int k){
        int p;
        if(k>0){
            p=100;
        }
        else{
            p=50;
        }
        Graphics2D gr = bf3.createGraphics();
        gr.setColor(color);
        gr.setComposite(AlphaComposite.SrcOver.derive((float)p/100));
        gr.setStroke(new BasicStroke(2.0f));
        gr.drawOval(8,8,24,24);//oval
        gr.drawOval(12,12,16,16);//oval
        gr.setStroke(new BasicStroke(2.0f));
        gr.drawLine(2,20, 17,20);//linha horizontal 1
        gr.drawLine(23,20,38,20);// linha horizntal 2
        gr.drawLine(20,3,20,18);//linha vertical 1
        gr.drawLine(20,23,20,38);//linha vertival 2
        gr.dispose();
        imagem3=new JLabel(new ImageIcon(bf3));
        imagem3.setLocation(0,0);
        imagem3.setSize(40,40);
       
    }

E o metodo gerTarget tb da classe métodos é assim:

public JLabel getTarget(){
        return imagem3;
    }

Parece simples… mas o q acontece é q quando eu chamo o metodo change color, ele nunca muda o meu alpha… Gostaria imensamente de saber… jah que quando printo a tela os resultados q aparecem são convincentes:
1

0

1

0

0

1

0

0

0

1

Alguém pode me ajudar por caridade???
Obrigada!!!

O que eu pude perceber é q na primeira vez q eu chamo o metodo, passando como parametro 0.5, ele pinta o meu desenho com o alha com 50%,
mas quando chamo o metodo pela segunda vez e mando ele fazer o desenho, em outro lugar o ele pinta com o alpha 100%

O que estah havendo??

 public void drawTarget(Color color, double p){
        Graphics2D gr = bf3.createGraphics();
        gr.setColor(color);
        gr.setComposite(AlphaComposite.SrcOver.derive((float)p));
        System.out.println("p: "+ p);
        System.out.println("alpha: "+ p/100);
        gr.setStroke(new BasicStroke(2.0f));
        gr.drawOval(8,8,24,24);//oval
        gr.drawOval(12,12,16,16);//oval
        gr.setStroke(new BasicStroke(2.0f));
        gr.drawLine(2,20, 17,20);//linha horizontal 1
        gr.drawLine(23,20,38,20);// linha horizntal 2
        gr.drawLine(20,3,20,18);//linha vertical 1
        gr.drawLine(20,23,20,38);//linha vertival 2
        gr.fillRect(45,10, 1000, 100);
        gr.dispose();
        imagem3=new JLabel(new ImageIcon(bf3));
        imagem3.setLocation(0,0);
        imagem3.setSize(40,40);
    }

Ninguém tem nenhuma solução desde então???

Bom gente, acabei descobrindo o meu erro:
Eu não tava criando um novo buffer toda vez q eu chamava o metodo.
Se alguém precisar algum dia saber como faz:

public void drawTarget(Color color, int p){
        if(p>0){
            p=100;
            
        }
        else{
            p=30;
        }
        BufferedImage bf3 =  new BufferedImage(40,40,BufferedImage.TYPE_INT_ARGB); // tem q criar um novo buffer sempre q o metodo for chamado!
        Graphics2D gr = bf3.createGraphics();
        gr.setColor(color);
        gr.setComposite(AlphaComposite.SrcOver.derive((float)p/100));
        gr.setStroke(new BasicStroke(2.0f));
        gr.drawOval(8,8,24,24);//oval
        gr.drawOval(12,12,16,16);//oval
        gr.setStroke(new BasicStroke(2.0f));
        gr.drawLine(2,20, 17,20);//linha horizontal 1
        gr.drawLine(23,20,38,20);// linha horizntal 2
        gr.drawLine(20,3,20,18);//linha vertical 1
        gr.drawLine(20,23,20,38);//linha vertival 2
        gr.fillRect(45,10, 1000, 100);
        gr.dispose();
        imagem3=new JLabel(new ImageIcon(bf3));
        imagem3.setLocation(0,0);
        imagem3.setSize(40,40);
    }