2014-10-19 2 views
-2

Предположим, что мой пользовательский рендеринг занимает много времени. Какими средствами я могу отображать ячейки в фоновом режиме? Вероятно, мне нужно получить событие, когда какая-то ячейка станет видимой, а затем визуализируйте ее в отдельном потоке, а затем нарисуйте.Как визуализировать пользовательскую JTable-ячейку в фоновом режиме?

Как это сделать?

UPDATE

Я знаю, что рендер должен быть быстрым. Но это не в моем случае. Итак, мне нужен дополнительный слой между презентацией и моделью, которая будет содержать какой-то кеш. Например, изображения предварительно выделенных ячеек. Вопрос в том, как связать этот слой с объектом.

+2

Вы можете использовать SwingWorker для создания образа и вернуть ему изображение или значок, который используется Renderer, но, как и в большинстве случаев, дьявол существует в деталях. Если вам нужна более конкретная помощь, тогда вы сначала сообщите нам больше подробностей и покажите нам свой соответствующий код, желательно как [минимальная примерная программа или MCVE] (http://stackoverflow.com/help/mcve). –

+0

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

+1

[Этот пример] (http://stackoverflow.com/questions/13753562/adding-progress-bar-to-each-table-cell-for-file-progress-java/13755155#13755155) использует 'SwingWorker' для скопируйте файл с прогрессом, представленным в 'JTable', он может предоставить некоторые идеи – MadProgrammer

ответ

4

Отказ должен быть как можно быстрее. Вывод должен выполнять сложные вычисления, просто нарисуйте модель, а не вычисляйте ее каждый раз. Рендеры вызываются из EDT (Thread Dispatch Thread), и я думаю, без дополнительной информации, что, возможно, вам следует рассчитать модель в отдельном потоке, а рендер просто нарисует модель в EDT. Если модель по-прежнему недоступна, вы можете отключить компонент, например.

Отправьте код для более точного решения пожалуйста.

+0

........ точно. 1+ –

+0

У нас в России есть пословица о деле: «пшеница должна созревать вовремя и в достаточном количестве». Хрущев сказал это. Я знаю, что рендер должен быть быстрым. Все это знают. Вопрос в том, что делать, когда этого не происходит. –

+1

+1 «Вопрос в том, что делать, когда он не делает», и вам был предоставлен ответ, насколько мы можем, поскольку вы отказываетесь опубликовать демонстрационный код, даже если вас дважды попросили сделать это. Основной ответ заключается в предварительном рендеринге. Без подробностей процесса рендеринга и почему это так долго, мы не можем предложить больше конкретного решения. – camickr

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