2013-08-30 6 views
3

Это моя проблема. У меня есть таблица с 50 столбцами и 10000 строк, и все данные являются строками. В Swing, когда у меня есть один TableCellRenderer, который отображает строки для всей таблицы.JavaFX TableCell vs Swing TableCellRenderer экземпляры

В JavaFx для отображения той же таблицы у меня создано 50000 объектов TableCell.

Я что-то упустил? Это никогда не будет иметь производительности, выделить 50K объекта не приемлемо.

Есть ли способ в JavaFx использовать только один TableCell для рендеринга всех моих ячеек и схожего поведения с Swing?

ответ

5

Из Javadoc для класса Cell:

Поскольку TreeView, ListView, TableView и другие подобные элементы управления потенциально могут быть использованы для отображения невероятно больших объемов данных, это не представляется возможным создать реальную ячейку для каждый элемент в элементе управления. Мы представляем чрезвычайно большие наборы данных, используя только очень мало Ячей. Каждая ячейка «перерабатывается» или используется повторно. Это то, что мы имеем в виду, когда говорим, что эти элементы управления виртуализированы.

В принципе, TableView будет создавать столько экземпляров ячеек, сколько необходимо для отображения содержимого на экране. Если вы прокрутите таблицу, ячейки будут переработаны. В принципе, это должно дать вам такую ​​же производительность, как и у Swing, торгуя небольшими издержками памяти для более простой модели программирования.

+0

Удивительно, большое спасибо. На самом деле я чувствую себя глупо. Я прочитал JavaDoc on Cell, но этот важный момент не ударил меня, пока вы его не опубликовали! Благодарю. –

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