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

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

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

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

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

textual
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.KeyAdapter;
  4. import java.awt.event.KeyEvent;
  5.  
  6. public class TestGUI {
  7.     public static void main(String[] args) {
  8.  
  9.         //создаём фрэйм
  10.         JFrame frame = new JFrame("TestGUI");
  11.         frame.setSize(300, 300);
  12.         frame.setLayout(null);
  13.         frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  14.         frame.setLocationRelativeTo(null);
  15.  
  16.  
  17.  
  18.         //создаём TextField
  19.         JTextField edit = new JTextField();
  20.         edit.setBounds(100, 100, 100, 25);
  21.         edit.setBackground(Color.pink);
  22.         frame.add(edit);
  23.  
  24.         frame.setVisible(true);
  25.  
  26.         edit.addKeyListener(new KeyAdapter() {
  27.             @Override
  28.             public void keyTyped(KeyEvent e) {
  29.                 super.keyTyped(e);
  30.                 char key = e.getKeyChar();
  31.                 int position = edit.getText().length();
  32.                 if (!isCorrectKey(edit, key, position)) {
  33.                     e.consume();
  34.                 }
  35.             }
  36.         });
  37.  
  38.     }
  39.  
  40.  
  41.     public static boolean isCorrectKey(JTextField edit, char key, int position) {
  42.  
  43.         int pos = 0;
  44.         boolean tochka = false;
  45.         String str = edit.getText();
  46.  
  47.         for (int i = 0; i < str.length(); i++){
  48.             if (str.charAt(i) == '.') {
  49.                 tochka = true;
  50.                 pos = i;
  51.                 break;
  52.             }
  53.         }
  54.  
  55.         if (key == '\b') {
  56.             return true;
  57.         }
  58.  
  59.         if (Character.isDigit(key)) {
  60.             if ((pos == 0) && (position >= 0 && position < 2)) return true;
  61.             if ((pos == 1) && (position >= 2 && position < 5)) return true;
  62.             if ((pos == 2) && (position >= 3 && position < 6)) return true;
  63.         }
  64.  
  65.         if (key == '.') {
  66.             if ((position == 2 || position == 1) && (tochka == false)) return  true;
  67.         }
  68.         return false;
  69.     }
  70. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут