JTextField - potatoscript/JavaSwing GitHub Wiki
📝 JTextField in Java Swing
1️⃣ Introduction to JTextField
A JTextField is a GUI component in Java Swing used to accept single-line text input from the user.
Why Use JTextField?
✔️ Allows user input
✔️ Supports text editing, selection, and copying
✔️ Can be customized with font, size, color, and events
2️⃣ Creating a Basic JTextField
Example: Adding a Text Field to a JFrame
import javax.swing.*;
public class JTextFieldExample {
public static void main(String[] args) {
// Create JFrame
JFrame frame = new JFrame("JTextField Example");
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create JTextField
JTextField textField = new JTextField("Enter text here...", 20);
// Add text field to frame
frame.add(textField);
// Make frame visible
frame.setVisible(true);
}
}
Explanation
✔️ new JTextField("Enter text here...", 20); → Creates a text field with placeholder text and a 20-character width.
✔️ frame.add(textField); → Adds the text field to the frame.
✔️ By default, text is left-aligned inside the field.
3️⃣ Getting and Setting Text
Example: Read & Change Text in JTextField
String inputText = textField.getText(); // Get user input
textField.setText("New text"); // Set new text
✔️ getText() → Returns the current text in the field.
✔️ setText("New text") → Updates the field content.
4️⃣ Handling JTextField Events with ActionListener
When the Enter key is pressed inside a JTextField, an ActionEvent occurs.
Example: Detecting User Input
import javax.swing.*;
import java.awt.event.*;
public class JTextFieldEventExample {
public static void main(String[] args) {
JFrame frame = new JFrame("JTextField Event");
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField(20);
JLabel label = new JLabel("Enter your name:");
// Add ActionListener
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String input = textField.getText();
JOptionPane.showMessageDialog(frame, "Hello, " + input + "!");
}
});
// Add components to frame
JPanel panel = new JPanel();
panel.add(label);
panel.add(textField);
frame.add(panel);
frame.setVisible(true);
}
}
Explanation
✔️ textField.addActionListener() → Detects Enter key press.
✔️ JOptionPane.showMessageDialog() → Shows a pop-up with input.
5️⃣ Customizing JTextField (Size, Color, Font)
Example: Styling a JTextField
textField.setFont(new Font("Arial", Font.BOLD, 14)); // Change font
textField.setForeground(Color.BLUE); // Text color
textField.setBackground(Color.LIGHT_GRAY); // Background color
textField.setHorizontalAlignment(JTextField.CENTER); // Center text
✔️ setFont(new Font("Arial", Font.BOLD, 14)); → Changes font & size.
✔️ setForeground(Color.BLUE); → Changes text color.
✔️ setBackground(Color.LIGHT_GRAY); → Changes background color.
✔️ setHorizontalAlignment(JTextField.CENTER); → Aligns text inside the field.
6️⃣ Disabling or Making JTextField Read-Only
Example: Disabling a Text Field
textField.setEditable(false); // User cannot type
textField.setEnabled(false); // Field is grayed out
✔️ setEditable(false); → Locks the field (user cannot edit).
✔️ setEnabled(false); → Disables the field (gray and non-editable).
7️⃣ Limiting Input Length
By default, JTextField does not restrict input length. You need to manually limit it.
Example: Restricting Input to 10 Characters
import javax.swing.*;
import javax.swing.text.*;
public class JTextFieldLimitExample {
public static void main(String[] args) {
JFrame frame = new JFrame("JTextField Limit");
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField(20);
// Limit input length to 10 characters
((AbstractDocument) textField.getDocument()).setDocumentFilter(new DocumentFilter() {
public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
if ((fb.getDocument().getLength() + string.length()) <= 10) {
super.insertString(fb, offset, string, attr);
}
}
public void replace(FilterBypass fb, int offset, int length, String string, AttributeSet attr) throws BadLocationException {
if ((fb.getDocument().getLength() + string.length() - length) <= 10) {
super.replace(fb, offset, length, string, attr);
}
}
});
frame.add(textField);
frame.setVisible(true);
}
}
✔️ Uses DocumentFilter to restrict input length.
8️⃣ Using JTextField with JButton
Example: Get Text When Clicking a Button
import javax.swing.*;
import java.awt.event.*;
public class JTextFieldButtonExample {
public static void main(String[] args) {
JFrame frame = new JFrame("JTextField & JButton");
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField(15);
JButton button = new JButton("Submit");
JLabel label = new JLabel("Enter something:");
// Add ActionListener to button
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String input = textField.getText();
JOptionPane.showMessageDialog(frame, "You entered: " + input);
}
});
// Add components to frame
JPanel panel = new JPanel();
panel.add(label);
panel.add(textField);
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
}
✔️ button.addActionListener() → Reads JTextField input when clicked.
✔️ Displays user input in a dialog box.
🔥 Summary
✅ JTextField allows single-line text input.
✅ Use getText() & setText() to read and change text.
✅ Handle Enter key events with ActionListener.
✅ Customize with fonts, colors, alignment, and size.
✅ Combine with JButton for interactive input handling.
✅ Limit input length using DocumentFilter.