Ich habe ein JTextField und ein JPasswordField. Werden in das JTextField genau 4 Integer-Zeichen eingegeben, soll das JPasswordField automatisch den Fokus erhalten.
Mittlerweile bin ich soweit, dass ich im JTextField nur Integerwerte zulasse und nach 4 Stellen auch nichts weiter mehr eingegeben werden kann. Allerdings springt der Cursor nicht ins nächste Feld :?
Ich wende das Ganze folgendermaßen auf mein JTextField an:
Kann eigentlich nicht mehr viel sein, nur ich such hier mittlerweile schon 2 Stunden und finds leider nicht :cry:
Mittlerweile bin ich soweit, dass ich im JTextField nur Integerwerte zulasse und nach 4 Stellen auch nichts weiter mehr eingegeben werden kann. Allerdings springt der Cursor nicht ins nächste Feld :?
Code:
import java.awt.Toolkit;
import javax.swing.JPasswordField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
public class GoToNextField extends DefaultStyledDocument{
private static final long serialVersionUID = 4491019536355604475L;
private int maxCharacters;
private JPasswordField next;
public GoToNextField(int maxChars, JPasswordField next) {
maxCharacters = maxChars;
this.next = next;
}
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException
{
try
{
Integer.parseInt(str);
int len = getLength() + str.length();
if(len <= maxCharacters)
{
super.insertString(offs, str, a);
System.out.println(next);
if(len == maxCharacters)
{
next.transferFocus();
}
}
else
{
Toolkit.getDefaultToolkit().beep();
}
}
catch(NumberFormatException numbEx)
{
System.out.println("nuberformat");
}
catch(NullPointerException nEx)
{
System.out.println("nullpointer");
}
}
}
Ich wende das Ganze folgendermaßen auf mein JTextField an:
Code:
userName.setDocument(new GoToNextField(4, passwordField));
Kann eigentlich nicht mehr viel sein, nur ich such hier mittlerweile schon 2 Stunden und finds leider nicht :cry: