KeyEventで作ってみた。これは面倒だなー
      field.addKeyListener (new KeyAdapter () {
        public void keyTyped (KeyEvent ev) {
          final char c = ev.getKeyChar ();
          if (!ev.isActionKey () && Character.isLetter (c)) {
            ev.consume (); // 処理を奪う
            final int loc = field.getCaretPosition ();
            final StringBuffer buf = new StringBuffer (field.getText ());
            buf.delete (loc, loc + 1);  // deleteCharAtと違って例外なし
            buf.insert (loc, c);
            final String edited = buf.toString ();
            field.setText (edited);
            field.setCaretPosition (loc + 1);
          }
        }
      });