Ввод определенного количества цифр в 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;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д