В дереве с несколькими столбцами, как изменить размер столбцов на содержимое при расширении/сворачивании и обновлении данных?Автоматическое изменение размера столбцов при расширении позиций
Решение аналогичного question for tables не работает.
То же, что:
tree.addListener(SWT.Collapse, new Listener(){
@Override
public void handleEvent(Event e) {
expandAndResize(false, (TreeItem) e.item);
}
});
tree.addListener(SWT.Expand, new Listener() {
@Override
public void handleEvent(Event event) {
expandAndResize(false, (TreeItem) event.item);
}
});
private static void expandAndResize(Boolean expand_, TreeItem item_)
{
System.out.println((expand_?"Expanding":"Collapsing") + "item={" + item_ + "}");
item_.setExpanded(expand_);
System.out.println(" Resizing columns");
resizeTree(item_.getParent());
}
private static void resizeTree(Tree tree_)
{
for (TreeColumn tc: tree_.getColumns())
resizeTreeColumn(tc);
}
private static void resizeTreeColumn(TreeColumn treeColumn_)
{
treeColumn_.pack();
}
Это работает для обновления данных (путем вызова resizeTree
), но расширяется/разрушается это один шаг позади!
Более конкретно, если я разворачиваю элемент в первом столбце, а базовый элемент длиннее ширины столбца, изменение размера до этой ширины будет выполняться при следующем сведении или расширении какого-либо другого элемента (или если я непосредственно звоните resizeTree
).
Только в случае, если это важно: данные дается TreeContentProvider
и ITableLabelProvider
, и я думаю, что ITableLabelProvider
может вызвать проблемы (ширина колонки регулируется перед меткой получает генерируется ?!)
X-posted to Eclipse Community Forum
спасибо за подробный ответ, будет пытаться это как можно скорее – MadH
прекрасно работает, и это действительно дубликат http://stackoverflow.com/ вопросы/3148123/изменения-метка-в-JFace-TreeViewer-на-узла-расширение коллапс/3226914 # 3226914 – MadH