JFormattedTextField - Разрешить ввод только определенных символов - Java

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

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

Использую

MaskFormatter

в компоненте

JFormattedTextField

. Это очень удобно, когда нужно ввести ограничение на ввод только цифр или только букв. Но как разрешить ввод только

определенных символов

? (Например только буквы а,b,с) Или

числел из диапазона

(например от 1 до 100) Может быть, можно создать собственную маску? Заранее спасибо.

Решение задачи: «JFormattedTextField - Разрешить ввод только определенных символов»

textual
Листинг программы
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
 
public class Jframe extends JFrame {
 
    public Jframe() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(500, 400, 400, 300);
        setLayout(null);
        JTextField tf = new JTextField(10);
        tf.setBounds(20, 20, 340, 30);
        add(tf);
        setVisible(true);
 
        // магия начинается тут
        ((AbstractDocument) tf.getDocument()).setDocumentFilter(new MyDocumentFilter());
    }
 
    public static void main(String[] args) {
        new Jframe();
    }
}
 
// например, мы хотим фильтровать цифры 1 3 5 7 9
class MyDocumentFilter extends DocumentFilter {
    @Override
    public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
        string = string.replaceAll("[13579]", "");
        super.insertString(fb, offset, string, attr);
    }
    
    @Override
    public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
        text = text.replaceAll("[13579]", "");
        super.replace(fb, offset, length, text, attrs);
    }
}

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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