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();
}
}