Я работаю над частью приложения, которое отображает таблицы со статистическими данными о видеофайлах, представленных классом FrameInfo. Теперь, после того, как у меня изначально была модель таблицы, которая делала бы все, включая некоторое форматирование, я реорганизовал ее до другой крайности, и модель таблицы возвращала только экземпляр FrameInfo для каждой строки, а затем позволяла CellRenderer решать, какое поле отображать и как для каждой. столбец. Это было здорово, так как я мог делать приятные вещи, например, переключать отображение, например. значения тайм-кода между тиками, секундами или тайм-кодами ("00:01:02:03") только путем перерисовки. Я был счастлив, пока не скопировал и не вставил содержимое таблицы в электронную таблицу gdocs и не заметил, что получил только вывод toString() объектов моей модели во всех ячейках (что было логично, когда я начал думать об этом, но, очевидно, не то, что я хочу) .
Мои варианты, насколько я их вижу сейчас:
1) Поместите все обратно в модель
Плюсы: мне бы в буфере обмена было все так, как отображается, когда я копирую
Минусы: - означает запуск событий модели при переключении режима отображения тайм-кодов - написание маркеров (кстати, я использую JXTables) снова станет беспорядочным, так как мне придется выполнять сопоставление строк, где теперь я могу использовать свои объекты модели
2) Оставьте все как есть и создайте пользовательское действие копирования, которое использует средство визуализации, а затем извлекает текст из отображаемой метки.
Плюсы: - Код таблицы остается чистым
Минусы: - Объем работы (?) - Для таких вещей, как округление числа, я потерял бы точность
3) Поместите в модель все, кроме динамических материалов (тайм-коды), и сделайте тайм-коды в средстве визуализации, и смиритесь с тем фактом, что я не получаю WYSIWYG для копирования и вставки для этих столбцов.
Плюсы и минусы: - Более или менее половинчатый компромисс
Любой совет или, может быть, даже какой-нибудь код выхода, который я мог бы использовать, кто-нибудь?
Спасибо за ваше время!