Textfield używanie tylko cyfer

0

Co trzeba zrobić w Text Field można było wpisać tylko liczby (od 1 do 9)?

0

Użyć javax.swing.JFormattedTextField.

0

Mógłby ktoś to napisać dokładniej

0

Tu masz co nieco: http://4programmers.net/Forum/Java/169732-textfield_-_tylko_cyfry_z_zakresu_1-9
Poczytaj o JFormattedTextField.setFormatter(), javax.swing.text.NumberFormatter, javax.swing.text.MaskFormatter.

0

Witam
Ja to inaczej rozwiązałem bez używania JFormattedTextField.setFormatter(), javax.swing.text.NumberFormatter, javax.swing.text.MaskFormatter.
<code - java>
/**

  • @Author Piotr
    */
    public class Textod1do9 {
    Textod1do9() {
    initComp();
    }
    private void initComp() {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    JTextField text = new JTextField("");
    text.setPreferredSize(new Dimension(200,30));
    text.addKeyListener(new KeyAdapter() {
    @Override
    public void keyTyped(KeyEvent e) {
    textKeyTyped(e);
    }
    @Override
    public void keyPressed(KeyEvent e) {
    textKeyPressed(e);
    }
    });
    panel.add(text);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(panel);
    frame.setSize(250, 150);
    frame.setVisible(true);
    }
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    Textod1do9 te = new Textod1do9();
    }
    });
    }
    private boolean czyLiczba(char z){
    if (z >= '0' && z <= '9')
    return true;
    return false;
    }
    private void textKeyTyped(KeyEvent e) {
    if (!czyLiczba(e.getKeyChar()))
    e.consume();
    }
    private void textKeyPressed(KeyEvent e) {
    if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_V)
    {
    Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
    String schowek = "";
    try {
    schowek = (String) clip.getData(DataFlavor.stringFlavor);
    } catch (UnsupportedFlavorException ex) {
    System.out.println("To nie jest string");
    }
    catch (IOException ex) {
    System.out.println("Błąd");
    }
    for (int i = 0; i < schowek.length(); i++)
    if (!czyLiczba(schowek.charAt(i))){
    System.out.println(schowek.charAt(i));
    e.consume();
    break;
    }
    }
    }
    }
    </code - java>
    Zwyczajnie nie znam klas które wymienił kolega @iooi ale warto poczytać i dowiedzieć się czegoś nowego.
    Może moje rozwiązanie to droga trochę dłuższa ale też działa.
    Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1