JXTreeTable - манипулирование флажками из внешнего приложения - возможно?
Используя Java-код, я пытаюсь манипулировать другим внешним Java-приложением, для которого у меня нет доступа к какой-либо информации о том, как оно было закодировано. В частности, я пытаюсь манипулировать JXTreeTable. Один из столбцов типа Boolean содержит флажки.
Одна вещь, которую я пытался сделать, это написать код действия двойного щелчка, затем пробела, который сработал. Однако мой менеджер хотел бы, чтобы я нашел способ переключать флажки без использования пробела.
Мне интересно - кто-нибудь знает способ переключения флажков с помощью методов Java, несмотря на то, что я не замечал дизайн оригинального приложения? Я пытался использовать setCellData() с логическим параметром. Как ни странно, вызов getCellData() для ячейки сразу после этого возвращает значение, к которому я ее изменил, но сам флажок не переключается - плюс, при отправке формы, это значение отражается переданным флажком, а не логическим значением в клетка.
Кроме того, флажки в логическом столбце содержат метки. У меня есть ощущение, что эти метки генерируются TableRenderer, но как я могу получить значения на метках?
Примечание. Я выполняю весь код Java с помощью сценария автоматического тестирования, который пишу (точнее, в QTP). Итак, я ограничен во многих подходах, которые я могу использовать (например, я не могу кодировать свои собственные классы Java)
2 ответа
Предполагая, что данные столбца поддерживаются логическим значением в модели данных, измените значения в модели данных.
Просто используйте, вы запускаете необходимое событие изменения таблицы, чтобы пользовательский интерфейс мог обновляться.
Вот так я и решил свою проблему:
Моя конкретная ситуация, тем не менее, оказалась намного сложнее, как я теперь выяснил. Оказалось, что непосредственное изменение модели не имело никакого эффекта - мне приходилось вносить все изменения в таблицу с помощью фактических узловых объектов в дереве. С помощью слепой трассировки я обнаружил, что разработчики закодировали пользовательские обработчики узлов с помощью методов, позволяющих одновременно изменять состояние флажка и данные в модели. Чтобы обновить отображение таблицы, я использовал treeTable.updateUI().