Java 将TableViewer与TreeViewer对齐

Java 将TableViewer与TreeViewer对齐,java,tree,swt,jface,tableviewer,Java,Tree,Swt,Jface,Tableviewer,我正在创建一个SWT应用程序,其中有两个treeviewer和一个TableViewer TableViewer的每一行中都包含图像,这些图像表示TreeViewer中该行的日期 但是,问题是TableViewer中的图像没有与TreeViewer中的行正确对齐。我有没有办法确保他们的队伍保持水平 谢谢 已添加 您可以通过覆盖“测量方法”的行为来更改行高的测量方式,即将侦听器添加到SWT.MeasureItem。有一个很好的例子。只需使用您在TreeViewer中使用的图标的高度加上几个边框像素

我正在创建一个SWT应用程序,其中有两个
treeviewer
和一个
TableViewer

TableViewer
的每一行中都包含图像,这些图像表示
TreeViewer
中该行的日期

但是,问题是
TableViewer
中的图像没有与
TreeViewer
中的行正确对齐。我有没有办法确保他们的队伍保持水平

谢谢

已添加


您可以通过覆盖“测量方法”的行为来更改行高的测量方式,即将
侦听器添加到
SWT.MeasureItem
。有一个很好的例子。只需使用您在
TreeViewer
中使用的图标的高度加上几个边框像素即可

以下是重要的代码部分:

Display display = new Display();
Shell shell = new Shell(display);
shell.setBounds(10,10,200,250);
final Table table = new Table(shell, SWT.NONE);
table.setBounds(10,10,150,200);
table.setLinesVisible(true);
for (int i = 0; i < 5; i++) {
   new TableItem(table, SWT.NONE).setText("item " + i);
}
table.addListener(SWT.MeasureItem, new Listener() {
   public void handleEvent(Event event) {
      int clientWidth = table.getClientArea().width;
      event.height = event.gc.getFontMetrics().getHeight() * 2;
      event.width = clientWidth * 2;
   }
});
shell.open();
while (!shell.isDisposed()) {
   if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
Display Display=new Display();
外壳=新外壳(显示);
壳牌立根(10,10200250);
最终表格=新表格(壳牌,SWT.无);
表.立根数(10,10150200);;
表.setLinesVisible(真);
对于(int i=0;i<5;i++){
新的TableItem(表,SWT.NONE).setText(“项”+i);
}
table.addListener(SWT.MeasureItem,new Listener(){
公共无效handleEvent(事件){
int clientWidth=table.getclientrea().width;
event.height=event.gc.getFontMetrics().getHeight()*2;
event.width=clientWidth*2;
}
});
shell.open();
而(!shell.isDisposed()){
如果(!display.readAndDispatch())display.sleep();
}
display.dispose();

我无法真正分享项目的样子。想象一下一个TreeViewer,然后是一个表,每行有一个小图标,然后是另一个TreeViewer。表格行与TreeViewer行没有完全对齐。如果不共享一些代码或视觉反馈,很难判断发生了什么…@Baz好的,我添加了一个简单的示例,我明天会查看。如果内容是机密的,你可以删除…@Baz没关系,这张照片中没有绝密内容。谢谢你。你能不能快速看一看我在签字前问的另一个问题?