Не правильный ввод в текстовое поле JTextField - Java

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

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

Ребята помогите решить проблему. У меня есть два текстовых поля JTextField, куда вводятся цифры и кнопка JButton, которая эти цифры, например, суммирует. Как сделать так, чтобы например, если пользователь не заполнил одно или два текстовых поля и нажал кнопку, не было ошибки, а просто выскакивает окно с надписью "не правильный ввод!", и программа не продолжалась выполнятся далее, пока пользователь не ведет данные в текстовые поля???

Решение задачи: «Не правильный ввод в текстовое поле JTextField»

textual
Листинг программы
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Arrays;
 
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);
        edit.select(0,0);
        frame.add(edit);
 
        frame.setVisible(true);
 
        edit.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                super.keyTyped(e);
                char key = e.getKeyChar();
                if (!isCorrectKey(edit, key)) {
                    e.consume();
                }
            }
        });
 
    }
 
 
    public static boolean isCorrectKey(JTextField edit, char key) {
        double number = 0;
        if (key == '.' || Character.isDigit(key) == true){
            try {
                number = Double.parseDouble(edit.getText() + key);
            }
            catch (NumberFormatException e) {
 
            }
            if (number == 0) return false;
            else if (number > 15) return false;
            else {
                String strTemp = edit.getText() + key;
                String[] strArrayTemp = strTemp.split("[.]");
                if (strArrayTemp.length == 2 && strArrayTemp[1].length() > 3) return false;
                else return true;
            }
        }
        else if (key == 8 || key == KeyEvent.VK_DELETE){
            if (edit.getText().length() != 0 && Double.parseDouble(edit.getText()) > 15){
                edit.setText("15");
                return true;
            }
            else return false;
        }
        else return false;
    }
}

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


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

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

13   голосов , оценка 3.923 из 5
Похожие ответы