Olá pessoal.
Estou com problemas no jformattedtextfield. Utilizei o MaskFormatter para limitar a entrada do textfield apenas para um caracter, e que seja apenas número. Na primeira vez, funciona. Mas depois que eu clico no botão LIMPAR, para apagar os números digitados, no textfield pode ser adicionado mais de um número, o que nao pode acontecer. Tem que ser inserido apenas um número.
Alguem tem alguma idéia ?
Segue o código abaixo.
public class Principal {
JFrame frame;
JPanel p, p_btn;
JButton clear;
JTextField t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13;
public static void main(String args[]) {
Principal main = new Principal();
main.Componentes();
}
public void Componentes() {
MaskFormatter mask = new MaskFormatter();
try {
mask = new MaskFormatter("#");
} catch(ParseException ex) { }
frame = new JFrame();
p = new JPanel();
t1 = new JTextField("7");
t1.setEditable(false);
t2 = new JTextField("8");
t2.setEditable(false);
t3 = new JTextField("9");
t3.setEditable(false);
t4 = new JFormattedTextField(mask);
t4.setPreferredSize(new Dimension(25, 10));
t5 = new JFormattedTextField(mask);
t5.setPreferredSize(new Dimension(25, 10));
t6 = new JFormattedTextField(mask);
t6.setPreferredSize(new Dimension(25, 10));
t7 = new JFormattedTextField(mask);
t7.setPreferredSize(new Dimension(25, 10));
t8 = new JFormattedTextField(mask);
t8.setPreferredSize(new Dimension(25, 10));
t9 = new JFormattedTextField(mask);
t9.setPreferredSize(new Dimension(25, 10));
t10 = new JFormattedTextField(mask);
t10.setPreferredSize(new Dimension(25, 10));
t11 = new JFormattedTextField(mask);
t11.setPreferredSize(new Dimension(25, 10));
t12 = new JFormattedTextField(mask);
t12.setPreferredSize(new Dimension(25, 10));
t13 = new JFormattedTextField(mask);
t13.setPreferredSize(new Dimension(25, 10));
t13.setEditable(false);
JPanel painelCentral = new JPanel(new BorderLayout()); // painel central -> container de todos os outros paineis
JPanel painelInferior = new JPanel(new FlowLayout()); // painel central -> container dos dois paineis inferiores
TitledBorder titulo1;
titulo1 = BorderFactory.createTitledBorder("ID produto");
p.setBorder(titulo1);
GridBagConstraints grid = new GridBagConstraints();
GridBagLayout layout = new GridBagLayout();
p.setLayout(layout);
grid.fill = GridBagConstraints.BOTH;
grid.gridy = 0;
grid.gridx = 0;
p.add(new JLabel("7 "), grid);
grid.gridy = 0;
grid.gridx = 1;
p.add(new JLabel("8 "), grid);
grid.gridy = 0;
grid.gridx = 2;
p.add(new JLabel("9 "), grid);
grid.gridy = 0;
grid.gridx = 3;
p.add(new JLabel(". "), grid);
grid.gridy = 0;
grid.gridx = 4;
p.add(t4, grid);
grid.gridy = 0;
grid.gridx = 5;
p.add(t5, grid);
grid.gridy = 0;
grid.gridx = 6;
p.add(t6, grid);
grid.gridy = 0;
grid.gridx = 7;
p.add(t7, grid);
grid.gridy = 0;
grid.gridx = 8;
p.add(t8, grid);
grid.gridy = 0;
grid.gridx = 9;
p.add(t9, grid);
grid.gridy = 0;
grid.gridx = 10;
p.add(t10, grid);
grid.gridy = 0;
grid.gridx = 11;
p.add(t11, grid);
grid.gridy = 0;
grid.gridx = 12;
p.add(t12, grid);
grid.gridy = 0;
grid.gridx = 13;
p.add(new JLabel("-"), grid);
grid.gridy = 0;
grid.gridx = 14;
p.add(t13, grid);
painelCentral.add(p,BorderLayout.CENTER);
painelCentral.add(painelInferior,BorderLayout.SOUTH);
clear = new JButton("Limpar");
p_btn = new JPanel();
p_btn.add(btn);
p_btn.add(clear);
painelInferior.add(p_btn);
clear.setToolTipText("Apagar todos os números digitados");
clear.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
t4.setText("");
t5.setText("");
t6.setText("");
t7.setText("");
t8.setText("");
t9.setText("");
t10.setText("");
t11.setText("");
t12.setText("");
t13.setText("");
}
}
);
frame.add(painelCentral);
frame.setSize(400, 150);
frame.setVisible(true);
frame.setResizable(false);
}
}