0

Using Filedialog I am selecting the set of files and displaying it in the checkbox table viewer. Then I want to process those files which I have checked in the checkboxtableviewer.

public void setTableInput(File[] selectedFiles) {

    for(int i = 0;i <selectedFiles.length; i++)
    {
        tableViewer.add(selectedFiles[i].getName());                
    }
    tableViewer.addCheckStateListener(new ICheckStateListener() {

        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object[] filesSelected = tableViewer.getCheckedElements();
            for(Object filename : filesSelected){
                System.out.println("values "+ (String)filename);
            }
        }
    });
}

For the code that I have written over here, I can get only the file names , Can anyone please tell me how to proceed if I want to get file location based on selecting the filename in checkbox?

Thanks in advance

4

1 回答 1

0

您需要使用内容和标签提供程序,以便可以将File数组设置为表格输入。

public void setTableInput(File[] selectedFiles) 
{
  tableViewer.setContentProvider(ArrayContentProvider.getInstance());

  tableViewer.setLabelProvider(new FileLabelProvider());

  tableViewer.setInput(selectedFiles);

  tableViewer.addCheckStateListener(new ICheckStateListener() 
  {
    @Override
    public void checkStateChanged(CheckStateChangedEvent event)
    {
      Object[] filesSelected = tableViewer.getCheckedElements();

      for (Object fileObj : filesSelected)
       {
         File file = (File)fileObj;

         System.out.println("values "+ file.getPath());
       }
    }
  });
}    


private static class FileLabelProvider extends LabelProvider
{
  @Override
  public String getText(final Object element)
  {
    File file = (File)element;

    return file.getName();
  }
}
于 2014-02-19T14:49:40.307 回答