l'unico modo per rendere funziona in tutte le circostanze è la seguente impostazione:
setBorder (BorderFactory.createLineBorder (new Color (0, 0, 0, 0), 2));
altrimenti (quando si avere lo sfondo nullo del contenitore genitore) vedrai il cursore "I" che rimane per sempre sul bordo sinistro del tuo JTextField. (Basta fare alcuni test per lo spessore del bordo diverso e osservare modo abbastanza strano il JTextField posiziona il cursore quando lo si attiva prima volta.)
In alternativa è possibile impostare:
setBorder (BorderFactory.createLineBorder (getBackground(), 2));
ma si otterrà il campo opticaly più grande di 2 pixel in tutte e quattro le direzioni. Se non si specifica lo spessore del bordo, verrà visualizzato il cursore TRA questo bordo e il campo rimanente per sempre.
sarebbe interessante sapere quale sistema/ambiente si sta utilizzando. O c'è più codice coinvolto ... È (ancora) funziona perfettamente per me. Vedi questa immagine con alcuni risultati (e codice): http: // img709.imageshack.us/img709/9034/fields.jpg –