Не правильный ввод в текстовое поле 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;
}
}