Sebastian29
Erfahrenes Mitglied
Moin moin!
Warum kann ich immer noch nicht den Focus im JTextField mit Tab bzw. Enter wechseln?
Im Hauptprogramm habe ich 2 Methoden ( focusLost und focusGained ) und für jedes JTextField zusätzlich addFocusListener( this ); dastehen.
Was habe ich noch vergessen?
Mein eigenes Komponent für JTextField:
Warum kann ich immer noch nicht den Focus im JTextField mit Tab bzw. Enter wechseln?
Im Hauptprogramm habe ich 2 Methoden ( focusLost und focusGained ) und für jedes JTextField zusätzlich addFocusListener( this ); dastehen.
Was habe ich noch vergessen?
Mein eigenes Komponent für JTextField:
Code:
public class MyTextField extends JTextField
{
boolean validDataEntered = false;
public MyTextField() {
this.requestFocus();
init();
}
public MyTextField(int columns) {
super(columns);
this.requestFocus();
init();
}
public MyTextField(String text) {
super(text);
this.requestFocus();
init();
}
public MyTextField(String text, int columns) {
super(text, columns);
this.requestFocus();
init();
}
public MyTextField(Document doc, String text, int columns) {
super(doc, text, columns);
this.requestFocus();
init();
}
// Private initialization routine to be run at construct time
private void init() {
// add a key event listener that will consume tab keys until valid data entered in field
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
// look for tab keys
if( e.getKeyCode() == KeyEvent.VK_ENTER ||
e.getKeyCode() == KeyEvent.VK_TAB ||
e.getKeyChar() == '\t' ) {
// if no valid data entered in field, consume event
// so that it won't be passed on to focus manager
if(!validDataEntered) {
e.consume();
}
}
else {
// assume any key other than tab is valid data
validDataEntered = true;
}
}
});
}
// Override to inform focus manager that component is managing focus changes
public boolean isManagingFocus()
{
return true;
}