курсор не изменяется на I-bar при наведении курсора мыши на JTextField

#swing #focus #mouseover #jtextfield

#swing #фокус #наведение курсора мыши #jtextfield

Вопрос:

Первоначально курсор меняется на i-bar при наведении курсора мыши, но после нажатия кнопки (которая в основном вызывает setEnabled(false), а затем setEnabled(true) для JTextField) , курсор не меняется на i-bar при наведении курсора мыши на JTextField.

В чем может быть причина? Любая помощь или подсказка в правильном направлении приветствуется.

Фокус также присутствует в обоих случаях.

Ответ №1:

Попробуйте использовать setEditable(true) / setEditable(false) вместо setEnabled .

Таким образом, JTextField файл по-прежнему будет фокусироваться, и его содержимое можно скопировать в буфер обмена, что невозможно, когда он отключен. Именно по этой причине курсор I не отображается (потому что вы не можете выбрать содержимое поля).

Редактировать (после комментариев OP):

Я попытался воспроизвести то, что вы описали, но это сработало отлично: у меня есть JTextField и 2 кнопки (одна включающая и одна отключающая); какими бы ни были манипуляции, курсор всегда имеет правильную форму, когда поле включено.

Я протестировал это поведение в Windows, 64 бит Java6, с LAF по умолчанию.

Вы обязательно должны опубликовать фрагмент, который может продемонстрировать проблему, а также рассказать больше о вашей среде.

Комментарии:

1. Спасибо, но я пытаюсь сказать, что значение из текстового поля используется для какой-то другой операции (отображение связанных данных) при щелчке BTN (вроде запроса BTN), во время которого панель, содержащая jtextfield, отключена (не подлежит редактированию), а при щелчке другого BTN (назад) отображаетсяjtextfield должен быть снова включен. Но после этого цикла работы курсор не меняется на i-bar при наведении курсора мыши на jtextfield.

2. Я не понимаю — какие другие последствия может привести setEnabled()?

3. Извините за мою ошибку, я не обратил внимания на этот момент. Было бы хорошо, если бы вы могли предоставить небольшой фрагмент для воспроизведения этой проблемы. Кроме того, интересно, что вы знаете: ваша ОС, версия JVM, внешний вид, который вы используете.

4. я пытаюсь воссоздать проблему изолированно, но тщетно. использует много собственных фреймворков. Спасибо, что сами прошли через боль, jfpoilpret . Опубликует, если произойдет какой-либо прогресс.

5. Я боюсь, что мы ничего не можем сделать, чтобы помочь дальше, пока вы не можете предоставить код, который воспроизводит то, что вы испытываете. Вы не предоставили достаточно подробностей о вашей конкретной ситуации, в частности о стеклопакете. Не ожидайте, что люди просто «угадают» вашу проблему и найдут решение.