Problemas com JFormattedTextField

4 respostas
marcusluiz83

Boa noite, amigos

Com a ajuda dos colegas do GUJ, consegui “mascarar” um campo de texto. Vejam meu código:

jTValor = new javax.swing.JFormattedTextField(); try { ftmValor = new MaskFormatter("###,##"); } catch (ParseException ex) { JOptionPane.showMessageDialog(null, "Digite apenas números. Não digite . ou ,"); } jTValor = new JFormattedTextField(ftmValor); ftmValor.setValidCharacters("[telefone removido]"); add(jTValor); jTValor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTValorActionPerformed(evt); } });
Minha dúvida é: se eu deixar o MaskFormatter do jeito que está (###,##) só consigo colocar valores tipo 100, 200, 300 etc. Não conseguirei colocar 1,00 ou 10,00. Como eu posso alterar o MaskFormatter para aceitar qualquer valor, mantendo as duas casas decimais?

Um abraço.

4 Respostas

rogeriopaguilar

Não sei se existe algo pronto, mas você pode utilizar um inputVerifier. Por exemplo:

class FormattedTextFieldVerifier extends InputVerifier {
	static DecimalFormat df = new DecimalFormat("###.00", new DecimalFormatSymbols(new Locale("pt","br")));
	
    public boolean verify(JComponent input) {
        if (input instanceof JFormattedTextField) {
            JFormattedTextField ftf = (JFormattedTextField)input;
            AbstractFormatter formatter = ftf.getFormatter();
            if (formatter != null) {
                String text = ftf.getText();
                if ( !text.endsWith(",00" )) {
                	int indice = text.indexOf(",");
                	String tmp = text.substring(indice, text.length());
                	tmp = tmp.replaceAll(" ", "0");
                	text = text.substring(0, indice) + tmp;
                }
            	try {
					df.parse(text);
                	ftf.setText(text);
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
					JOptionPane.showMessageDialog(null, "Valor inválido!");
					return false;
				}
            }
         }
         return true;
     }
     public boolean shouldYieldFocus(JComponent input) {
         return verify(input);
     }
 }

e no objeto JFormattedTextField você chama o método setInputVerifier:

MaskFormatter fmtValor = new MaskFormatter("###,##");
JFormattedTextField tf = new JFormattedTextField(  fmtValor );
fmtValor.setValidCharacters("[telefone removido]");                  
tf.setInputVerifier(new FormattedTextFieldVerifier());

Essa classe te dá uma idéia do que pode ser feito, porém o método verify deve ser alterado
dependendo do tipo de formatação/validação. No exemplo ele vai validar desde que você coloque os três
primeiros números. Neste caso ele completa com “00” no final.

Até mais.

marcusluiz83

Bom dia,

Testei o código do colega acima, e deu o seguinte erro:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at forms.FormClaro.initComponents(FormClaro.java:90)
        at forms.FormClaro.<init>(FormClaro.java:34)
        at forms.FormClaro$7.run(FormClaro.java:366)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)
Minha classe ficou assim:
package forms;

import dao.VendaDAO;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.text.MaskFormatter;
import modelos.DadosDaVenda;

/**
 *
 * @author marcus
 */
public class FormClaro extends javax.swing.JFrame {
    private MaskFormatter ftmValor;

    /** Creates new form FormClaro */
    public FormClaro() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        jTCodigo = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jTValor = new javax.swing.JFormattedTextField();
        jLabel5 = new javax.swing.JLabel();
        jTNdc = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        jTLoja = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        jTData = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        jTHora = new javax.swing.JTextField();
        jPanel2 = new javax.swing.JPanel();
        jLabel6 = new javax.swing.JLabel();
        jTOperadora = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        jTDdd = new javax.swing.JTextField();
        jLabel11 = new javax.swing.JLabel();
        jTNumero = new javax.swing.JTextField();
        jLabel12 = new javax.swing.JLabel();
        jBSalvar = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Recarga: Operadora Claro /+/LaraSoft/+/");

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/forms/icone_claro.jpg"))); // NOI18N

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Dados da venda"));

        jLabel2.setText("Código do vendedor:");

        jLabel4.setText("Valor da recarga:");

        try {
            MaskFormatter ftmValor = new MaskFormatter("###,##");
        } catch (ParseException ex) {
            JOptionPane.showMessageDialog(null, "Digite apenas números. Não digite . ou ,");
        }
        JFormattedTextField tf = new JFormattedTextField(ftmValor);
        ftmValor.setValidCharacters("[telefone removido]");
        tf.setInputVerifier(new FormattedTextFieldVerifier());
        jTValor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTValorActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(jLabel4))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jTCodigo)
                    .addComponent(jTValor, javax.swing.GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE))
                .addContainerGap(530, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel2)
                    .addComponent(jTCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jTValor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jLabel5.setText("NDC:");

        jTNdc.setEditable(false);
        jTNdc.setFocusable(false);

        jLabel7.setText("Loja:");

        jTLoja.setEditable(false);
        jTLoja.setText("3");
        jTLoja.setFocusable(false);
        jTLoja.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTLojaActionPerformed(evt);
            }
        });

        jLabel8.setText("Data:");

        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        jTData.setText(format.format(new Date()));
        jTData.setEditable(false);
        jTData.setFocusable(false);
        jTData.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTDataActionPerformed(evt);
            }
        });

        jLabel9.setText("Hora:");

        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
        jTHora.setText(sdf.format(new Date()));
        jTHora.setEditable(false);
        jTHora.setFocusable(false);

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Informações da recarga"));

        jLabel6.setText("Operadora:");

        jTOperadora.setEditable(false);
        jTOperadora.setText("Claro");
        jTOperadora.setFocusable(false);

        jLabel10.setText("DDD:");

        jTDdd.setText("24");

        jLabel11.setText("Número do celular*:");

        jLabel12.setText("* Apenas números, sem traços");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel6)
                    .addComponent(jLabel10)
                    .addComponent(jLabel11))
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jTNumero, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel12))
                    .addComponent(jTOperadora, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTDdd, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(252, 252, 252))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel6)
                    .addComponent(jTOperadora, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel10)
                    .addComponent(jTDdd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel11)
                    .addComponent(jTNumero, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel12))
                .addGap(24, 24, 24))
        );

        jBSalvar.setText("Registrar venda");
        jBSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBSalvarActionPerformed(evt);
            }
        });

        jMenuBar1.setBackground(java.awt.Color.orange);
        jMenuBar1.setForeground(java.awt.Color.orange);

        jMenu1.setText("Opções");
        jMenu1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenu1ActionPerformed(evt);
            }
        });

        jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItem1.setText("Trocar operadora");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(jLabel5)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTNdc, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel7)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTLoja, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel8)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTData, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel9)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTHora, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addGap(315, 315, 315)
                                .addComponent(jBSalvar)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 348, Short.MAX_VALUE)))))
                .addContainerGap())
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jTData, jTHora});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel5)
                            .addComponent(jTNdc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel7)
                            .addComponent(jTLoja, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel8)
                            .addComponent(jTData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel9)
                            .addComponent(jTHora, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jBSalvar)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
    }                                      

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        Formulario principal = new Formulario();
        principal.setVisible(true);
    }                                          

    private void jTDataActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
    }                                      

    private void jBSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
            // TODO add your handling code here:
            DadosDaVenda dv1 = new DadosDaVenda();
            dv1.setNdc(jTNdc.getText());
            dv1.setLoja("3");
            dv1.setDia(jTData.getText());
            dv1.setHora(jTHora.getText());
            dv1.setVendedor(jTCodigo.getText());
            dv1.setValor(jTValor.getText());
            dv1.setOperadora(jTOperadora.getText());
            dv1.setDdd(jTDdd.getText());
            dv1.setNumeroCelular(jTNumero.getText());
            VendaDAO dao = new VendaDAO();
            dao.adiciona(dv1);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Verifique se todos os campos foram preenchidos.");
        }
        JOptionPane.showMessageDialog(null, "Venda registrada com sucesso. Para sua segurança, anote a NDC no comprovante.");
        System.exit(1);

    }                                        

    private void jTLojaActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
}                                      

    private void jTValorActionPerformed(java.awt.event.ActionEvent evt) {                                        

}                                       

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new FormClaro().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jBSalvar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JTextField jTCodigo;
    private javax.swing.JTextField jTData;
    private javax.swing.JTextField jTDdd;
    private javax.swing.JTextField jTHora;
    private javax.swing.JTextField jTLoja;
    private javax.swing.JTextField jTNdc;
    private javax.swing.JTextField jTNumero;
    private javax.swing.JTextField jTOperadora;
    private javax.swing.JFormattedTextField jTValor;
    // End of variables declaration
}
O que fiz de errado?

Abraço.

marcusluiz83

rogeriopaguilar,

Consegui, amigão. Muito obrigado!

Abração.

marcusluiz83

Voltando ao problema, testei no NetBeans, e o valor é formatado corretamente. Só que fui visualizar os registros no banco de dados, e o campo valor está em branco. O estranho é que é um campo não nulo, as outras informações foram salvas normalmente.

Por que será, já que não me aparece nenhuma mensagem de erro?

O tipo de campo valor no banco é VARCHAR, e meu código ficou:

jTValor = new javax.swing.JFormattedTextField(); DecimalFormat df = new DecimalFormat("###.00", new DecimalFormatSymbols(new Locale("pt","br"))); JFormattedTextField jTValor = new JFormattedTextField(new NumberFormatter(df)); jTValor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTValorActionPerformed(evt); } });

Criado 20 de março de 2010
Ultima resposta 21 de mar. de 2010
Respostas 4
Participantes 2