Impostare a 1 nel costruttore non significa dire alla JTextField che deve prendere 1 solo carattere ma che essa deve essere visualizzata di lunghezza 1 a video (dove il LayoutManager non interviene autonomamente).
Come aggiungere un KeyListener che faccia al caso tuo:
codice:
tuaTextField.addKeyListener( new KeyAdapter() {
public void keyTyped(KeyEvent ke) {
String s = ((JTextField) ke.getSource()).getText();
if (s.length() > 1) {
((JTextField) ke.getSource()).setText( s.substring(0,1) );
}
}
});
Ciao.