对齐TableViewer和TreeViewer

时间:2013-07-18 19:11:17

标签: java tree swt jface tableviewer

我正在创建一个SWT应用程序,其中包含两个TreeViewers和一个TableViewer

TableViewer包含每行中的图像,用于指示TreeViewer该行中日期的某些内容。

但问题是TableViewer中的图片未与TreeViewer中的行正确对齐。我有什么方法可以确保他们的行完全保持水平?

由于

ADDED

Non aligning TreeViewer and TableViewer

1 个答案:

答案 0 :(得分:1)

您可以通过覆盖“测量方法”的行为来更改行高的方式,即将Listener添加到SWT.MeasureItem。有一个很好的例子here。只需使用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();