डिफ़ॉल्ट रूप से, एक JTextField नंबर्स, कैरेक्टर्स, और स्पेशल कैरेक्टर्स की अनुमति देता है। JTextField में टाइप किए गए यूज़र इनपुट को मान्य करना मुश्किल हो सकता है, खासकर अगर इनपुट स्ट्रिंग को int जैसे न्यूमेरिक वैल्यू में कन्वर्ट करना हो।
नीचे दिए गए उदाहरण में, JTextField केवल न्यूमेरिक वैल्यूज़ एंटर करने की अनुमति देता है।
उदाहरण
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTextFieldValidation extends JFrame {
JTextField tf;
Container container;
JLabel label;
public JTextFieldValidation() {
container = getContentPane();
setBounds(0, 0, 500, 300);
tf = new JTextField(25);
setLayout(new FlowLayout());
container.add(new JLabel("Enter the number"));
container.add(tf);
container.add(label = new JLabel());
label.setForeground(Color.red);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent ke) {
String value = tf.getText();
int l = value.length();
if (ke.getKeyChar() >= '0' && ke.getKeyChar() <= '9') {
tf.setEditable(true);
label.setText("");
} else {
tf.setEditable(false);
label.setText("* Enter only numeric digits(0-9)");
}
}
});
setVisible(true);
}
public static void main(String[] args) {
new JTextFieldValidation();
}
}
आउटपुट
टेक्स्ट फील्ड में केवल अंक (0-9) दर्ज किए जा सकते हैं। कोई अन्य कैरेक्टर दर्ज करने पर एडिटिंग डिसेबल हो जाती है और लाल रंग में एरर मैसेज दिखता है।
नोट: यह दृष्टिकोण KeyListener का उपयोग करता है, लेकिन आधुनिक Java एप्लिकेशन्स में DocumentFilter का उपयोग करना अधिक बेहतर और विश्वसनीय माना जाता है।