Как можно ограничить ввод символов в JTextField? - Java
Формулировка задачи:
Добрый день! Подскажите, как можно ограничить ввод символов в JTextField, чтобы вводились только цифры и ".", а остальные символы даже не выводились бы в TextField.
Решение задачи: «Как можно ограничить ввод символов в JTextField?»
textual
Листинг программы
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyAdapter;
- import java.awt.event.KeyEvent;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import javax.swing.*;
- public class Test extends JFrame {
- public Test() {
- final JLabel label = new JLabel();
- final JTextField tf1 = new JTextField ();
- JButton button = new JButton("Очистить");
- getContentPane().add (tf1, BorderLayout.NORTH);
- label.setForeground(Color.red);
- label.setFont(new Font("Consolas",Font.PLAIN,16));
- add(label,BorderLayout.SOUTH);
- add(button,BorderLayout.EAST);
- tf1.addKeyListener(new KeyAdapter() {
- @Override
- public void keyPressed(KeyEvent e) {
- Pattern p = Pattern.compile("(([0-9]){0,}([\\.]){0,})+");
- Matcher m = p.matcher(tf1.getText());
- if(!m.matches()) {
- tf1.setEnabled(false);
- label.setText("Нажмите на кнопку \"Очистить\" Вводите только цифры и символ \".\"");
- }
- }
- });
- button.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- tf1.setText("");
- tf1.setEnabled(true);
- }
- });
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setLocationRelativeTo(null);
- setSize(640,340);
- }
- public static void main(String[] args) {
- Frame f = new Test();
- f.setVisible(true);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д