Единственный способ заставить его работать при ВСЕХ обстоятельствах - это следующий параметр:
setBorder (BorderFactory.createLineBorder (new Color (0, 0, 0, 0), 2));
в противном случае (если у вас нулевой фон родительского контейнера), вы увидите, что курсор «I» остается навсегда влевый край вашего JTextField.(Просто сделайте несколько тестов для различной толщины границ и наблюдайте довольно странный способ, которым JTextField помещает курсор при первой активации.)
В качестве альтернативы вы можете установить:
setBorder (BorderFactory.createLineBorder (getBackground (), 2));
, но вы будетеполучить оптическое поле, увеличенное на 2 пикселя во всех четырех направлениях.Если вы не укажете толщину границы, вы увидите курсор МЕЖДУ этой границей, а поле останется навсегда.