是否可以在swt中使用MultiColumn- explorer小部件?

时间:2018-03-05 13:13:59

标签: swt eclipse-rcp jface

正如我在图像中附加的那样,Windows提供了查看列中的多个文件。 是否有任何SWT Widget可用于以多列方式显示/排列对象,类似于Windows?

我已经使用了“行布局(SWT.Vertical)”,但如果它有超过2000个对象,我在绘画时会面临一些性能问题。

虽然Windows资源管理器有超过6000个数据,但它没有这种性能问题。

我不能使用表查看器,因为它将每行作为一个对象,但在我的要求中,我需要在每个单元格中有对象

如果JFace / SWT中有任何内置窗口小部件可用于多列视图资源管理器来安排对象,请告诉我。

由于

enter image description here

1 个答案:

答案 0 :(得分:1)

我无法找到此要求的直接JFace / SWT小部件。可能是其他高级成员可以指点。

根据您的要求Nebula Gallery Widget NOTE: THIS WIDGET AND ITS API ARE STILL UNDER DEVELOPMENT, as written in its Javadoc

代码如下:

public class Test {
    public static void main(String[] args) {
        Display display = new Display();
        Image itemImage = new Image(display, Program.findProgram("jpg").getImageData()); //$NON-NLS-1$
        Shell shell = new Shell(display);
        shell.setLayout(new FillLayout());

        Gallery gallery = new Gallery(shell, SWT.H_SCROLL | SWT.MULTI | SWT.VIRTUAL);

        // Renderers
        NoGroupRenderer gr = new NoGroupRenderer();
        gr.setMinMargin(2);
        gr.setItemHeight(20);
        gr.setItemWidth(100);
        gr.setAutoMargin(true);
        gallery.setGroupRenderer(gr);

        ListItemRenderer ir = new ListItemRenderer();
        gallery.setItemRenderer(ir);

        GalleryItem group = new GalleryItem(gallery, SWT.NONE);

        for (int i = 0; i < 20000; i++) {
            GalleryItem item = new GalleryItem(group, SWT.NONE);
            if (itemImage != null) {
                item.setImage(itemImage);
            }
            item.setText("Item " + i); //$NON-NLS-1$
        }

        shell.pack();
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }
}

输出:

enter image description here