SWT/Jface TreeViewer例子-实现文件浏览器

时间:2021-01-11 20:26:08

就是实现一个简单的文件浏览功能

废话少说,大家看一下代码:

tree的定义:

  final TreeViewer treeViewer = new TreeViewer(shell, SWT.BORDER
    | SWT.V_SCROLL | SWT.H_SCROLL);
  tree = treeViewer.getTree();
  tree.setLayoutData(GridDataUtil.fillData());
  
  treeViewer.setContentProvider(new ViewContentProvider());
  treeViewer.setLabelProvider(new ViewLabelProvider());
  treeViewer.setAutoExpandLevel(2);
  treeViewer.setInput(File.listRoots()); //这个自己获取一下自己的file集合

 

content:

class ViewContentProvider implements ITreeContentProvider {
    public void inputChanged(Viewer v, Object oldInput, Object newInput) {
    }

    @Override
    public void dispose() {
    }

    @Override
    public Object[] getElements(Object inputElement) {
      return (File[]) inputElement;
    }

    @Override
    public Object[] getChildren(Object parentElement) {
      File file = (File) parentElement;
      return file.listFiles();
    }

    @Override
    public Object getParent(Object element) {
      return ((File) element).getParentFile();
    }

    @Override
    public boolean hasChildren(Object element) {
      File file = (File) element;
      if (file.isDirectory()) {
        return true;
      }
      return false;
    }

  }

 

label:

class ViewLabelProvider extends LabelProvider {
    @Override
    public String getText(Object element) {
      File file = (File) element;
      String name = file.getName();
      if (name.length() > 0) {
        return name;
      }
      return file.getPath();
    }

    public Image getImage(Object obj) {
      Bundle bundle = FrameworkUtil.getBundle(this.getClass());
      URL url = FileLocator.find(bundle, new Path("icons/alt_window_32.gif"), null);
      ImageDescriptor image = ImageDescriptor.createFromURL(url);
      return image.createImage();
    }
  }

  @Override
  public boolean setFocus() {
    viewer.getControl().setFocus();
    return true;
  }

}

好吧 我承认

就是这样子

跑一下试试!