Float com 2 casas decimais e cifrão (R$)!

Olá pessoal, estou iniciando em java agora, e sou novo no forum também. Estou montando esse exercicio, e não consigo mostrar o valor do float com 2 casas decimais
e gostaria que o valor salario mostrasse o cifrão (R$)
ficaria muito grato se alguem me ajudasse

import java.text.DecimalFormat;
import javax.swing.JOptionPane;

public class Main {

   public static void main(String[] args) {

        String nome, str_sexo ;
        int ano;
        char sexo;
        float salario;

        nome = JOptionPane.showInputDialog ("Nome: ");
        ano = Integer.parseInt(JOptionPane.showInputDialog("Idade: "));
        str_sexo = JOptionPane.showInputDialog("Sexo: ");
        salario = Float.parseFloat(JOptionPane.showInputDialog("Salário: "));
        DecimalFormat df = new DecimalFormat("0.00");
        df.format (salario);

        sexo = str_sexo.charAt(0);

        JOptionPane.showMessageDialog (null,"Nome= " + nome +  "\n Idade= "
                                      + ano + "\n Sexo= " + str_sexo +
                                      "\n Salário= " + salario, "RESULTADO",
        JOptionPane.PLAIN_MESSAGE);

Cria um Procedimento desse aqui abaixo

int y; String valor1; String valor; String valor2; valor1 = /*AQUI é SEU CAMPO FLOAT*/ y = valor1.indexOf("."); valor2 = valor1.substring(y, valor1.length()); if (valor2.length() < 3) { valor2 = valor2 + 000; } valor2 = valor2.substring(0, 3); valor1 = valor1.substring(0, y); valor = (valor1 + valor2); //BLz, agora esse valor é só com 2 casas Decimais SeuText.setText("R$" + valor);

Acho melhor seguir por esse caminho. O próprio java já tem formatações para números em geral, levando em conta o Locale.

Locale loc = new Locale( "pt", "BR" );
NumberFormat currFmt = NumberFormat.getCurrencyInstance( loc );
tuavariavel_texto = currFmt.format( teu_valor );

Até