2012-06-22 3 views
1

Привет? у кого-то была проблема, например: курсор мигает более чем в одном поле за раз? В моем случае происходит следующее: Когда вы дважды щелкаете по полю JTextField, открывается JDialog, поэтому после закрытия этого фокуса направляется обратно в поле, которое было нажато перед открытием экрана.Курсор мигает в двух полях (JTextField)

Что происходит, так это то, что после выполнения этого действия одновременно отображаются два поля (обычно это первое поле , а также поле, в котором efetuei двойной щелчок). Эта среда случайна, бывают случаи, когда она не возникает.

При отладке внутренний обработчик класса, содержащийся в классе DefaultCaret более конкретно метод actionPerformed, понял , что: время это поле, и время другое, что именно те поля, которые мигания (д, кажется, очевидно, что я знаю). но они являются собственными внутренними классами Java, которые вызывают метод.

При прохождении поля с помощью вкладки курсор false исчезает.

Я использую JDK 6


я вернулся в центре внимания в invokeLater(), но не решается. Теперь оба синхронизированы флэш

Первый JComponent фокусирования является одним из полей, которые мигания неправильно

Я использую свой собственный FocusTraversalPolicy, разве что может оказывать влияние? Самое забавное, что в моем классе нет особо особого вида лечения.

я заметил, что стандартный класс Java, используя метод в синхронизирована getFirstComponent(), но добавил тот же контроль, но все еще не в порядке

+4

Это странное поведение.Если вы не получите достойный ответ в ближайшее время, подумайте о создании небольшой программы, минимальной необходимости, которая компилирует, запускает и демонстрирует вашу проблему, [sscce] (http://sscce.org). –

+1

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

+1

пожалуйста и с родной ОС (JDK 6_xxx) и использовали Look and Feel, потому что на платформе Windows невозможно моделировать ..., – mKorbel

ответ

5

На самом деле это фокус проблема для меня.

Обычно, когда JTextComponent теряет фокус setCaretVisible(false)/setSelectionVisible(false) называется, и когда происходит Фокус, происходит противоположное.

После закрытия JDialog попытаться вернуть Фокус внутрь invokeLater(). Также проверьте, что является первым настраиваемым JComponent в родителе JDialog.

0

Эта ситуация возникает потому, что проект я разрабатываю довольно большой, так что не получить небольшие примеры реализации

Проект имеет много компонентов, таблиц и контейнера, которые требуют ориентированию в то же время.

Оказалось, что Swing, поставил очередь на исполнение, много потоков, а затем отправил их, и пока он не закончил его, вы можете вставить grabFocus() или requestFocus(), что делает не плачь, первый он должен закончить все, а затем запустить мой запрос фокус.

Решает эту ситуацию, используя Swing SwingUtilities.invokeLater (...);

Спасибо за советы.