Estou supondo que vc esta utilizando Swing.
import java.awt.GridLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.text.NumberFormat;
import java.util.Locale;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class JTextFieldFormat extends JFrame {
private JTextField txtSaldo;
private JTextField txtNome;
public JTextFieldFormat(){
super("Teste Focus");
setLayout(new GridLayout(3,1));
txtSaldo = new JTextField();
txtNome = new JTextField();
getContentPane().add(txtSaldo);
getContentPane().add(txtNome);
txtSaldo.addFocusListener(listener);
pack();
setVisible(true);
}
public FocusAdapter listener = new FocusAdapter(){
public void focusLost(FocusEvent e){
try {
NumberFormat nf = NumberFormat.getInstance(new Locale("pt","BR"));
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
String valueStr = txtSaldo.getText();
if(!valueStr.equals("")){
Number value = nf.parse(txtSaldo.getText());
txtSaldo.setText(nf.format(value));
}
} catch (Exception ex) {
System.out.println(ex);
}
}
};
public static void main(String[] args) {
new JTextFieldFormat();
}
}
O lance ai é tratar evento de Focus…
Abraços