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