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.