2016-10-27 2 views
0

Я хотел бы иметь столбцы NatTable динамически расширятьсяNatTable-Настройка динамической ширины столбца

  • показать все значения в ячейке
  • полностью заполнить Родитель Композитный

Кажется, я могу сделать то или другое, но не то и другое. Другими словами, если у меня есть большой родительский композит, а у NatTable есть только несколько столбцов с очень короткими значениями, у меня будет много свободного пространства (иначе NatTable будет иметь небольшую ширину по сравнению с родительской шириной композитов)

Я попытался следующие фрагменты кода:

// This sets the full width of the Composite, but all columns are equal 
// width. If a column has a long value, the value will be truncated. 
glazedListsGridLayer.getBodyDataLayer().setColumnPercentageSizing(true); 

// This auto-resizes the columns based on their values. If the values 
// are short, this table will not fill the width of the composite 
nattable.addConfiguration(new DefaultNatTableStyleConfiguration() { { 
    cellPainter = new LineBorderDecorator(new TextPainter(false, true, 5, true));} 
}); 

Я предполагаю, что я ищу для гибрида, где столбцы будут автоматически изменены на основе значения. Если таблица не заполняет всю ширину композиционного материала я хотел бы либо:

  • Всех столбцов добавить дополнительную ширину ровно до тех пор, пока таблица не имеет такой же размер, как составной родитель или
  • Конкретный столбец будет добавлен дополнительным ширина до стола имеет такой же размер, как составного родителя

Если таблица заполняет всю ширину Composite и значения столбцов длинные, Я хотел бы обеспечить таблица имеет горизонтальную полосу прокрутки (при необходимости) для просмотра всех столбцов и их не усеченных значений

У кого-нибудь есть представление о том, как достичь этого? Спасибо!

+0

Вы в основном просите что-то вроде минимальной ширины столбца, насколько я знаю, в настоящее время не поддерживается из коробки. –

ответ

1

Задание минимальной ширины в настоящее время не поддерживается. Но если это только визуальная вещь, вы можете попытаться использовать NatGridLayerPainter, который печатает на всем доступном пространстве. Это похоже на дополнительный столбец, но фактически без добавления столбца.

NatTable natTable = new NatTable(parent); 
NatGridLayerPainter layerPainter = new NatGridLayerPainter(natTable); 
natTable.setLayerPainter(layerPainter); 
+0

К сожалению, похоже, что это не так много. Он добавил вертикальную глубину, но не горизонтальную. Я также попробовал это в тандеме с другими фрагментами кода в моем исходном сообщении, но не повезло. Должен ли я переопределить layerPainter или делать с ним больше, чем это дает фрагмент кода? Благодаря! – ekjcfn3902039

+0

Для вашего случая использования вам необходимо объединить его с TextPainter, который вычисляет ширину от вашего исходного сообщения. Если вы также хотите добавить поддельные строки, вам нужно создать NatGridLayerPainter с вторым параметром для поддельной высоты строки. –

+0

Я попытался использовать фрагмент TextPainter, показанный выше (как есть), рядом с вашим фрагментом (как есть) и не повезло. Я должен упомянуть, что когда таблица изначально отображает, у нее нет строк (и зависит от длины заголовка столбца). Он не охватывает ширину композита, как хотелось бы. Когда строки входят, он изменяется, как и следовало ожидать, но он никогда не заполняет ширину родительского состава. – ekjcfn3902039

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

  • Нет связанных вопросов^_^