如何确定JFace TreeViewer或SWT树的首选大小?

时间:2009-03-11 04:15:14

标签: swt jface

我正在编写一个Eclipse插件,它有一个悬停控件,由两个控件组成,一个在另一个之上:

我可以轻松计算大小提示的HTML查看器(BrowserInformationControl)

包含树的TreeViewer。

我已经用实际内容设置了我的树。但是,我无法找到一种方法来计算树的大小或渲染后的大小提示。

1 个答案:

答案 0 :(得分:4)

根据org.eclipse.swt.widgets.Tree的API,这应该通过以下方式完成:

public Point computeSize(int wHint,
                     int hHint,
                     boolean changed)
  

控件的首选大小是最佳显示的大小。

     

宽度提示和高度提示参数允许调用者询问控制问题,例如“给定特定宽度,控件需要多高才能显示所有内容?”
  为了表明调用者不希望约束特定维度,为提示传递常量SWT.DEFAULT。

     

如果更改的标志为真,则表示接收方的内容已更改,因此需要刷新包含控件的布局管理器可能保持的任何高速缓存。调整控件的大小时,更改的标志将为false,因此可以保留布局管理器缓存。


请注意,在Windows上,computeSize()的行为存在缺陷:请参阅此message和此bug:已修复为eclipse 3.4M1并转发。

this message中使用computeSize()的示例。

使用getBound()可能是另一个interesting alternative