Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How do I limit number of characters in a JTextField?(different from others)

801912Mar 10 2008 — edited Mar 10 2008
Hi,

I know this question has been posted several times on this forum, but my question is actually a different one. So please read.
I have the following code that puts two JTextFields in a JFrame. I want to limit the number of characters in the first JTextField to three characters. What's different about my question from other solutions provided, is that I don't want to be able to type more than three characters in the JTextField, and then not be able to get out of JTextField unless I have three or less characters. What I do want, is to have maximum of three characters, not be able to type the fourth, and have access to the other JTextField at all times.
I have tried the following solution of setting an InputVerifier to my JTextField, but it hasn't worked, since I can still type the fourth character.
Looking forward to your help!
Thanks.
import java.awt.Dimension;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TextFieldVerifier {

	public TextFieldVerifier()
	{
		JFrame frame = new JFrame("My TextVerifier");
		JPanel panel = new JPanel();
		JLabel firstTextFieldLabel = new JLabel("First: ");
		JLabel secondTextFieldLabel = new JLabel("Second: ");
		final JTextField myTextField = new JTextField();
		myTextField.setPreferredSize(new Dimension(100,20));
		
		myTextField.setInputVerifier(new InputVerifier()
		{

			public boolean verify(JComponent input) {
				if(myTextField.getText().length()<=3)
				{
					return true;
				}
				else
				{
				    return false;	
				}
			}
		    
		});
		
		myTextField.addKeyListener(new KeyAdapter()
		{
			public void keyTyped(KeyEvent e)
			{
				if(!myTextField.getInputVerifier().verify(myTextField))
				{
					myTextField.setText(myTextField.getText().substring(0, myTextField.getText().length()-1));
				}
			}
		});
		JTextField secondTextField = new JTextField();
		
		secondTextField.setPreferredSize(new Dimension(100,20));
		panel.add(firstTextFieldLabel);
		panel.add(myTextField);
		panel.add(secondTextFieldLabel);
		panel.add(secondTextField);
		frame.getContentPane().add(panel);
		frame.setSize(new Dimension(200,100));
		frame.setVisible(true);
		
	}
	public static void main (String [] args)
	{
		TextFieldVerifier v = new TextFieldVerifier();
	}
}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 7 2008
Added on Mar 10 2008
5 comments
2,275 views