2012-10-27 2 views
1

У меня есть таблица сказать Table-C, который получает данные строки путем перетаскивания из Table-A или Table-B. Если строка вытаскивали из Table-A в Table-C то, что строка не редактируется, и она должна быть заданный цвет. Если строка перетаскивается из Table-B в Table-C, тогда эта строка имеет только определенные столбцы как редактируемые, а эта строка отображается другим цветом. Я не могу установить isCellEditable для некоторых заданных строк в Table-C, потому что я не могу контролировать место, где пользователь бросает строку на Table-C.. Моя первая часть задачи состояла в том, что я мог бы перетащить данные, которые я могу сделать успешно. Но моя вторая часть заключается в том, что я должен предоставить это свойство isCellEditable и color для этих строк на лету в зависимости от таблицы, из которой она находится. Это та часть, в которой я застрял. Любые идеи будут оценены.Установка ячеек Editable недвижимости в JTable ряд на лету

ответ

2

Вам необходимо указать маркер в данных строки, который модель таблицы может идентифицировать для строк, которые вы не хотите редактировать, этот маркер также может использоваться рендерерами.

Один из способов будет обернуть входящие данные строки в классе обертке в качестве своего упал на стол, таким образом, вы могли бы засеять обертку с тем, что когда-либо информация, которую вы хотели/необходимое

+0

+1 .. Хорошо, насколько как я понял .. это означает, что в методе isCellEditable я должен получить маркер текущей строки, а затем, основываясь на маркере, я должен вернуть либо true, либо false. Но каково место, в котором должен быть маркер. Могу ли я вставить еще один столбец (который не показан в таблице), который я могу использовать для хранения маркера. – Amarnath

+0

Это зависит от того, как настроена ваша модель. Если каждая строка представлена ​​одним объектом, вы можете создать специальный объект-оболочку, который содержит объект строки и предоставляет расширенную функциональность, которую вы хотите. Это означает, что вам нужно использовать instanceof, чтобы определить, как обрабатывать каждую строку. Если вы используете массивы, вы можете включить дополнительные элементы за пределы числа столбцов, которые могут быть заполнены этими маркерами. – MadProgrammer

+0

Да, мой единственный объект для каждой строки. Поэтому я создаю объект-оболочку, содержащий как объект строки, так и мой маркер. ? это тот rt .. – Amarnath

Смежные вопросы