Ввод определенного количества цифр в JTextField - Java

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. У меня есть класс, который не дает вводить ничего кроме цифр и точки в текстовое поле JTextField. Можно ли добавить к этому классу какой-то код, чтобы до точки максимум можно было вводить 2 цифры, а после точки максимум - 3 цифры. То есть например, 2.456, 56.1, 99,999, но например, 234.1, 2.3456 - не можно было вводить.
widthWallField.setDocument(new PlainDocument() {
            String chars = "0123456789.";
 
            @Override
            public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
                if (chars.indexOf(str) != -1) {
                    if (getLength() < 6) {
                        super.insertString(offs, str, a);
                    }
                }
            }
        });

Решение задачи: «Ввод определенного количества цифр в JTextField»

textual
Листинг программы
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
 
public class TestGUI {
    public static void main(String[] args) {
 
        //создаём фрэйм
        JFrame frame = new JFrame("TestGUI");
        frame.setSize(300, 300);
        frame.setLayout(null);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
 
 
 
        //создаём TextField
        JTextField edit = new JTextField();
        edit.setBounds(100, 100, 100, 25);
        edit.setBackground(Color.pink);
        frame.add(edit);
 
        frame.setVisible(true);
 
        edit.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                super.keyTyped(e);
                char key = e.getKeyChar();
                int position = edit.getText().length();
                if (!isCorrectKey(edit, key, position)) {
                    e.consume();
                }
            }
        });
 
    }
 
 
    public static boolean isCorrectKey(JTextField edit, char key, int position) {
 
        int pos = 0;
        boolean tochka = false;
        String str = edit.getText();
 
        for (int i = 0; i < str.length(); i++){
            if (str.charAt(i) == '.') {
                tochka = true;
                pos = i;
                break;
            }
        }
 
        if (key == '\b') {
            return true;
        }
 
        if (Character.isDigit(key)) {
            if ((pos == 0) && (position >= 0 && position < 2)) return true;
            if ((pos == 1) && (position >= 2 && position < 5)) return true;
            if ((pos == 2) && (position >= 3 && position < 6)) return true;
        }
 
        if (key == '.') {
            if ((position == 2 || position == 1) && (tochka == false)) return  true;
        }
        return false;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5