Por que num tô conseguindo desenhar um oval?

Por que num tô conseguindo desenhar um oval?

 BufferedImage bf3 =  new BufferedImage(20,20,BufferedImage.TYPE_INT_RGB);

public void drawTarget(){
        Graphics2D gr = bf3.createGraphics();
        gr.setColor(Color.GREEN);
        gr.setBackground(Color.yellow);
        gr.setStroke(new BasicStroke(1.0f));
        gr.drawOval(5,5,0,0);
        gr.dispose();
        imagem3=new JLabel(new ImageIcon(bf3));
        imagem3.setSize(50,50);
    }

Ué, como vc espera conseguir se a altura e a largura da sua oval é 0?

Outra coisa, pra oval ser pintada, você precisa usar o método fillOval. O drawOval desenha só o contorno.

Ah sim, confundi onde coloca as coordenas x,y…
eu tô usando o drawOval pq realmente eu soh quero o contorno…
mas o q tah acontecendo agora é que o contorno tah sendo desenhado em verde, até aí tudo bem… mas o background onde ele tah sendo desenhado tah preto. O circulo verde tah sendo desenhado dentro de um quadro preto… eu quero só o contorno do circulo verde e mais nada, sem esse quadro preto de background… o que está havendo?

bf3 =  new BufferedImage(35,35,BufferedImage.TYPE_INT_RGB);
public void drawTarget(){
        Graphics2D gr = bf3.createGraphics();
        gr.setColor(Color.GREEN);
        gr.setBackground(Color.yellow);
        gr.setStroke(new BasicStroke(1.0f));
        gr.drawOval(0,0,25,25);
        gr.dispose();
        imagem3=new JLabel(new ImageIcon(bf3));
        imagem3.setBackground(Color.WHITE);
        imagem3.setSize(50,50);
    }

Troque o tipo para:
bf3 = new BufferedImage(35,35,BufferedImage.TYPE_INT_ARGB);

Isso permitirá fundo transparente. Ou faça um Fill com a cor do fundo desejada, antes de pintar a oval.

oba!!! Valeu Vini!!! Brigadão!!!

uma outr coisa, tem como o usuario definir em tempo de execução qual é a cor que ele quer q o desenho seja feito?? definir o gr.setColor?

Tem sim. Basta criar uma variável para guardar a cor escolhida, e definir esse valor em botões.

Você pode usar para isso um JColorChooser:
http://download.oracle.com/javase/tutorial/uiswing/components/colorchooser.html

Sim, mas eu quero desenhar o seguinte codigo primeiramente em vermelho, mas eu quero q o usuario tenha a opção de mudar a cor desse desenho… eu não entendi como devo fazer… eu tenho q criar outro buffer? tenho q deletar o buffer em q desenhei em vermelho e depois inserir um novo buffer com a cor escolhida?

        public void drawTarget(){
        Graphics2D gr = bf3.createGraphics();
        gr.setColor(Color.RED);
        gr.setBackground(Color.yellow);
        gr.setStroke(new BasicStroke(3.0f));
        gr.drawOval(10,10,25,25);//oval
        gr.drawLine(5,22, 15,22);//linha horizontal 1
        gr.drawLine(29,22,39,22);// linha horizntal 2
        gr.drawLine(23,5,23,15);//linha vertical 1
        gr.drawLine(23,29,23,39);//linha vertival 2
        gr.dispose();
        imagem3=new JLabel(new ImageIcon(bf3));
        imagem3.setSize(50,50);
    }

Sim, o mais fácil é apagar um e substituir por outro com a cor escolhida.