JComponent InputMap загадочным образом стирается

Я добавил привязки к JComponentкарта ввода, изменяя карту, возвращаемую jCompInstance.getInputMap(),

Первый раз, когда я нажимаю на ключ, который я связал, он работает нормально. Каким-то образом после этого InputMap стирается. Что я имею в виду под этим jCompInstance.getInputMap().size() возвращается 0,

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

Что здесь может происходить?

Есть ли для меня способ установить точку наблюдения (в Eclipse) JComponentвнутренний InputMap исследовать, как это может происходить?

Заранее спасибо!

1 ответ

Решение

Неудачная попытка воспроизвести проблему разочаровывает, но всегда стоит того: она подразумевает, что ваш основной подход к связыванию клавиш, скорее всего, здравый, и справочный пример будет направлять ваш поиск проблемы.

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

  • Убедитесь, что объекты Swing GUI создаются и управляются только в потоке диспетчеризации событий в нужном порядке, как предлагается здесь.

  • Проверьте правильность использования UIManager.setLookAndFeel(); в частности, не используйте его в качестве замены validate(),

  • В пользовательском компоненте переопределите updateUI() применять любые пользовательские привязки, как показано здесь для цветов.

Другие вопросы по тегам