JComponent InputMap загадочным образом стирается
Я добавил привязки к JComponent
карта ввода, изменяя карту, возвращаемую jCompInstance.getInputMap()
,
Первый раз, когда я нажимаю на ключ, который я связал, он работает нормально. Каким-то образом после этого InputMap
стирается. Что я имею в виду под этим jCompInstance.getInputMap().size()
возвращается 0
,
Я прошу прощения за то, что не предложил минималистичный пример кода, который воспроизводит проблему; попытки сократить мою огромную программу были тщетными.
Что здесь может происходить?
Есть ли для меня способ установить точку наблюдения (в Eclipse) JComponent
внутренний InputMap
исследовать, как это может происходить?
Заранее спасибо!
1 ответ
Неудачная попытка воспроизвести проблему разочаровывает, но всегда стоит того: она подразумевает, что ваш основной подход к связыванию клавиш, скорее всего, здравый, и справочный пример будет направлять ваш поиск проблемы.
Напомним, что делегат пользовательского интерфейса каждого компонента отвечает за установление привязок клавиш. В предположении, вы можете проверить несколько связанных вещей:
Убедитесь, что объекты Swing GUI создаются и управляются только в потоке диспетчеризации событий в нужном порядке, как предлагается здесь.
Проверьте правильность использования
UIManager.setLookAndFeel()
; в частности, не используйте его в качестве заменыvalidate()
,В пользовательском компоненте переопределите
updateUI()
применять любые пользовательские привязки, как показано здесь для цветов.