Witam.
Próbuje ograniczyć pole tekstowe tak, aby przyjmowało tylko cyfry z zakresu [1-9]. Próbowałem wykorzystać coś w stylu:
MaskFormatter mask=new MaskFormatter("#");
mask.setValidCharacters("123456789");
JFormattedTextField ftf=new JFormattedTextField(mask);
Na początku wszystko działa dobrze, jednak gdy wykonam
tft.setText("");
pole tekstowe przestaje działać.
Jak mogę to poprawić, żeby działało po wyczyszczeniu? Chyba, że jest na to jakiś inny sposób ?
Przykładowy program, bo nie wiem czy każdy zrozumiał o co mi chodzi.
import java.awt.*;
import java.awt.event.*;
public class Przyklad extends javax.swing.JFrame implements ActionListener {
javax.swing.JFormattedTextField tft;
javax.swing.JButton przycisk = new javax.swing.JButton();
javax.swing.text.MaskFormatter mask=null;
public Przyklad()
{
try {
mask = new javax.swing.text.MaskFormatter("#");
mask.setValidCharacters("123456789");
} catch (java.text.ParseException e) {}
tft=new javax.swing.JFormattedTextField(mask);
Dimension d1=new Dimension(35,35);
tft.setPreferredSize(d1);
setLayout(new FlowLayout());
add(tft);
przycisk.setText("Wyczysc");
przycisk.addActionListener(this);
add(przycisk);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent ev)
{
tft.setText("");
}
public static void main(String args[])
{
Przyklad p = new Przyklad();
p.setSize(320,70);
p.setVisible(true);
}
}