需求:
一棵多列树形,每次展开(或收起)操作后,重新设置各列宽,让其文本可以完全显示。
问题:
目前,TreeColumn提供了pack()方法来实现此功能;
但是经试验,对于首列(即有树形的列)来说,此方法计算的列宽不对,会有一部分节点的文本显示不全(貌似是SWT的BUG)。请教一下,大家遇到这个问题的时候,是怎么解决的?
一棵多列树形,每次展开(或收起)操作后,重新设置各列宽,让其文本可以完全显示。
问题:
目前,TreeColumn提供了pack()方法来实现此功能;
但是经试验,对于首列(即有树形的列)来说,此方法计算的列宽不对,会有一部分节点的文本显示不全(貌似是SWT的BUG)。请教一下,大家遇到这个问题的时候,是怎么解决的?
解决方案 »
- org.apache.jasper.JasperException: Unable to compile class for JSP:
- 如何对数据库的大容量的访问...大家谈谈看法..
- 到底什么叫“单点登录”
- 问个超级简单的问题 两个hashTable找出不同的元素存入第三个hashTable中
- 在eclipse中怎样将Java Project改成Tomcat Project ?
- 谁有精通EJB大全的电子版图书
- 调用webservice时有如下错误:No deserializer defined for array type
- 请教:把ear拆开成war和jar发布要改点什么东西吗?
- 最近看Spring MVC的课程,遇到一个问题
- Maven下载依赖问题
- JFreeChart 排序问题
- 有没有对vaadin比较熟?
解决了,如下:public class TreeViewerAutoFitListener implements ITreeViewerListener { public void treeExpanded(TreeExpansionEvent event) {
packColumns((TreeViewer) event.getSource());
}
public void treeCollapsed(TreeExpansionEvent event) {
packColumns((TreeViewer) event.getSource());
}
private void packColumns(final TreeViewer treeViewer) {
treeViewer.getControl().getShell().getDisplay().asyncExec(new Runnable() {//关键是这句Display.asyncExec()
public void run() {
TreeColumn[] treeColumns = treeViewer.getTree().getColumns();
for (TreeColumn treeColumn: treeColumns) {
if (treeColumn.getWidth() == 0)
continue;
treeColumn.pack();
}
}
});
}
}
treeViewer.addTreeListener(new TreeViewerAutoFitListener());