Feedback Form

JTextField: Single-Line Input, Validation, and Document Listeners

JTextField: Single-Line Input, Validation, and Document Listeners

JTextField Overview

Java Swing में JTextField एक बहुत ही commonly used component है जो single-line text input के लिए इस्तेमाल किया जाता है। जब भी user से text या numeric input लेना होता है, वहाँ JTextField काम आता है। इसे आप login forms, registration pages या data entry fields में अक्सर देखेंगे।

ये component javax.swing package के अंदर आता है और इसे JTextComponent class से extend किया गया है। इसका सबसे बड़ा फायदा ये है कि ये interactive है — यानी user इसमें typing कर सकता है, data modify कर सकता है और programmatically भी इसका data control किया जा सकता है।

How to Create JTextField

JTextField को बनाना बहुत आसान है। आप चाहें तो इसे empty create कर सकते हैं या default text के साथ initialize कर सकते हैं। इसके कुछ common constructors नीचे दिए गए हैं:

  • JTextField() → एक empty text field बनाता है।
  • JTextField(int columns) → fixed width के साथ text field बनाता है।
  • JTextField(String text) → pre-filled text के साथ text field बनाता है।
  • JTextField(String text, int columns) → text और width दोनों define करने की सुविधा देता है।

Example Code:

JTextField field1 = new JTextField();
JTextField field2 = new JTextField(20);
JTextField field3 = new JTextField("Enter your name", 25);

ऊपर दिए गए example में तीसरे text field में “Enter your name” default text के रूप में दिखेगा और user उसे edit भी कर सकता है।

Adding JTextField in JFrame

JTextField को किसी JFrame या JPanel में add करने के लिए हमें layout set करना होता है और फिर field को frame में add करना होता है।

Example Code:

import javax.swing.*;

public class TextFieldExample {
  public static void main(String[] args) {
    JFrame frame = new JFrame("JTextField Example");
    JTextField tf = new JTextField("Type Here", 20);
    frame.add(tf);
    frame.setSize(300,150);
    frame.setLayout(new FlowLayout());
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

यह simple code एक JFrame बनाता है जिसमें एक single-line text field है जहाँ user input दे सकता है।

Important Methods of JTextField

JTextField के कुछ important methods नीचे दिए गए हैं जो exam में अक्सर पूछे जाते हैं:

MethodDescription
setText(String text)Text field में नया text set करता है।
getText()Text field से current text को return करता है।
setColumns(int n)Text field की width set करता है।
setEditable(boolean value)Editable या non-editable mode set करता है।
select(int start, int end)Text के specific portion को select करता है।
setFont(Font f)Text field का font style और size change करता है।

Validation in JTextField

जब user कोई input देता है, तो यह जरूरी होता है कि हम उस input को validate करें ताकि invalid data ना जाए। Validation को हम ActionListener या KeyListener के ज़रिए implement कर सकते हैं।

Example: Numeric Validation

tf.addActionListener(e -> {
  String text = tf.getText();
  if (!text.matches("[0-9]+")) {
    JOptionPane.showMessageDialog(frame, "Please enter only numbers!");
    tf.setText("");
  }
});

ऊपर के example में, जैसे ही user enter दबाता है, program check करता है कि input केवल numbers हैं या नहीं। अगर नहीं, तो warning message show होता है।

Document Listeners in JTextField

अगर आप चाहते हैं कि हर बार जब user कुछ type करे या delete करे, तो तुरंत action लिया जाए, तो इसके लिए DocumentListener use किया जाता है। यह listener JTextField के अंदर text changes को detect करता है।

Example: Using DocumentListener

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;

public class DocumentListenerExample {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Document Listener Example");
    JTextField tf = new JTextField(20);
    JLabel label = new JLabel("Typed: ");

    tf.getDocument().addDocumentListener(new DocumentListener() {
      public void insertUpdate(DocumentEvent e) { label.setText("Typed: " + tf.getText()); }
      public void removeUpdate(DocumentEvent e) { label.setText("Typed: " + tf.getText()); }
      public void changedUpdate(DocumentEvent e) { label.setText("Typed: " + tf.getText()); }
    });

    frame.add(tf);
    frame.add(label);
    frame.setLayout(new FlowLayout());
    frame.setSize(300,200);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

यह code हर बार जब user type या delete करता है, तो label में updated text दिखाता है। यानी यह real-time update को handle करता है।

Handling Events in JTextField

JTextField के साथ सबसे common event है ActionEvent। जब user “Enter” key दबाता है, तो ActionEvent trigger होता है। इसे handle करने के लिए ActionListener add किया जाता है।

Example:

tf.addActionListener(e -> {
  String name = tf.getText();
  System.out.println("Welcome " + name);
});

इस event के जरिए आप input को process कर सकते हैं, जैसे किसी field में नाम डालने पर उसे greeting message दिखाना।

Common Properties of JTextField

  • Background Color: setBackground(Color.cyan)
  • Foreground Color: setForeground(Color.black)
  • Font Style: setFont(new Font("Arial", Font.BOLD, 14))
  • ToolTip Text: setToolTipText("Enter your data here")
  • Alignment: setHorizontalAlignment(JTextField.CENTER)

इन properties से आप अपने JTextField को visually बेहतर बना सकते हैं और user experience को smooth कर सकते हैं।

Multiple JTextFields Example

कई बार forms में multiple input fields होते हैं — जैसे Name, Age, Email, Password आदि। नीचे एक example है जिसमें चार text fields हैं और एक button input को process करता है।

Example Code:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MultiFieldForm {
  public static void main(String[] args) {
    JFrame frame = new JFrame("User Form");
    JTextField name = new JTextField(15);
    JTextField age = new JTextField(5);
    JTextField email = new JTextField(20);
    JButton submit = new JButton("Submit");

    submit.addActionListener(e -> {
      System.out.println("Name: " + name.getText());
      System.out.println("Age: " + age.getText());
      System.out.println("Email: " + email.getText());
    });

    frame.setLayout(new FlowLayout());
    frame.add(name);
    frame.add(age);
    frame.add(email);
    frame.add(submit);
    frame.setSize(350,200);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Advantages of JTextField

  • Lightweight और easy-to-use component है।
  • Single-line input के लिए perfect है।
  • Real-time updates DocumentListener से possible हैं।
  • Input validation को आसानी से implement किया जा सकता है।
  • Color, Font, और Alignment जैसे UI features को customize किया जा सकता है।

Exam Point of View

  • Exam में अक्सर पूछा जाता है — “JTextField क्या है?” या “इसके constructors और methods बताइए।”
  • Programming question में “Create a form using JTextField and show entered data on button click” जैसे practical भी आते हैं।
  • Listeners (ActionListener और DocumentListener) का role याद रखना जरूरी है क्योंकि ये event handling से जुड़े होते हैं।

Quick Notes

  • Class: javax.swing.JTextField
  • Inheritance: Object → Component → Container → JComponent → JTextComponent → JTextField
  • Used For: Single-line text input
  • Listeners: ActionListener, DocumentListener
  • Validation: Regular expressions या custom logic से की जा सकती है।