Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在文件选择器中选择多个文件_Java_Swt_Openfiledialog_Filedialog - Fatal编程技术网

Java 在文件选择器中选择多个文件

Java 在文件选择器中选择多个文件,java,swt,openfiledialog,filedialog,Java,Swt,Openfiledialog,Filedialog,如何使用FileDialog选择不同目录中的多个文件 我需要创建一个UI,在这里我需要添加来自不同目录的大量文件。此外,我需要创建一个复选框,以指示选择了哪些文件进行进一步操作 我试图用SWT实现这一点,但没有得到预期的结果。事实上,我无法选择每个文件,因为我无法将复选框添加到每个文件。因为我是SWT的新手,所以我很难理解 我的代码在这里: import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.

如何使用FileDialog选择不同目录中的多个文件

我需要创建一个UI,在这里我需要添加来自不同目录的大量文件。此外,我需要创建一个复选框,以指示选择了哪些文件进行进一步操作

我试图用SWT实现这一点,但没有得到预期的结果。事实上,我无法选择每个文件,因为我无法将复选框添加到每个文件。因为我是SWT的新手,所以我很难理解

我的代码在这里:

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

public class DirFileSelection {
    Display display = new Display();
    Shell shell = new Shell(display);
    FileDialog fileDialog = new FileDialog(shell, SWT.MULTI);
    DirectoryDialog directoryDialog = new DirectoryDialog(shell);

    String sb = new String("");
    // the label used to display selected dir/file.

    Label label = new Label(shell, SWT.BORDER | SWT.WRAP);

    Button buttonSelectDir;
    Button buttonSelectFile;
    Button validate = new Button(shell, SWT.PUSH);;
    Button reset = new Button(shell, SWT.PUSH);;

    String selectedDir;
    String fileFilterPath = "F:/jdk1.5";

    public DirFileSelection() {

        shell.setSize(1000, 1000);
        label.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
        label.setText("Select a dir/file by clicking the buttons below.");

        buttonSelectDir = new Button(shell, SWT.PUSH);
        buttonSelectDir.setText("Select a directory");

        buttonSelectDir.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {

                directoryDialog.setFilterPath(selectedDir);
                directoryDialog.setMessage("Please select a directory and click OK");

                String dir = directoryDialog.open();
                if (dir != null) {

                    // label.setText("Selected dir: " + dir);
                    selectedDir = dir;
                    int decide = 0;
                    System.out.println(sb);
                    String[] str = sb.split("\n");

                    for (int i = 0; i < str.length; i++) {
                        // for (int j = i; j < str.length; j++) {
                        // if(i==j){
                        // continue;
                        // }
                        // else if(str[i].equals(str[j])){
                        // System.out.println("dup");
                        // x=false;
                        // }
                        // }
                        if (dir.equals(str[i])) {
                            System.out.println("dup");
                            decide = 1;
                            break;
                        }
                    }
                    if (decide == 0) {
                        sb = sb.concat(dir + "\n");
                        label.setText(sb);
                    }

                }
                // label.setText(sb.toString());
            }
        });

        buttonSelectFile = new Button(shell, SWT.PUSH);
        buttonSelectFile.setText("Select a file/multiple files");
        buttonSelectFile.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {

                fileDialog.setFilterPath(fileFilterPath);

                fileDialog.setFilterExtensions(new String[] { "*.*" });
                fileDialog.setFilterNames(new String[] { "ALL Files" });

                String firstFile = fileDialog.open();

                if (firstFile != null) {
                    fileFilterPath = fileDialog.getFilterPath();
                    String[] selectedFiles = fileDialog.getFileNames();

                    for (int i = 0; i < selectedFiles.length; i++) {
                        // sb.append(selectedFiles[i] + "\n");
                        sb = sb.concat(selectedFiles[i] + " \n");
                    }

                }
                label.setText(sb.toString());
            }
        });

        validate.setText("Validate");
        validate.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event arg0) {
                // TODO Auto-generated method stub

            }

        });

        reset.setText("Reset");
        reset.addListener(SWT.Selection, new Listener() {

            @Override
            public void handleEvent(Event arg0) {
                fileDialog.setFileName(null);
                System.out.println(fileDialog.getFileName());
                sb = "";
                shell.update();
                label.setText(sb.toString());
            }

        });

        label.setBounds(0, 0, 800, 180);
        buttonSelectDir.setBounds(0, 185, 200, 20);
        buttonSelectFile.setBounds(200, 185, 200, 20);

        validate.setBounds(400, 185, 200, 20);
        reset.setBounds(600, 185, 200, 20);
        shell.pack();
        shell.open();
        // textUser.forceFocus();

        // Set up the event loop.
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                // If no more entries in event queue
                display.sleep();
            }
        }

        display.dispose();
    }

    public static void main(String[] args) {
        new DirFileSelection();
    }
}
import org.eclipse.swt.swt;
导入org.eclipse.swt.widgets.Button;
导入org.eclipse.swt.widgets.DirectoryDialog;
导入org.eclipse.swt.widgets.Display;
导入org.eclipse.swt.widgets.Event;
导入org.eclipse.swt.widgets.FileDialog;
导入org.eclipse.swt.widgets.Label;
导入org.eclipse.swt.widgets.Listener;
导入org.eclipse.swt.widgets.Shell;
公营选举{
显示=新显示();
外壳=新外壳(显示);
FileDialog FileDialog=newfiledialog(shell,SWT.MULTI);
DirectoryDialog DirectoryDialog=新建DirectoryDialog(shell);
字符串sb=新字符串(“”);
//用于显示选定目录/文件的标签。
标签=新标签(外壳,SWT.BORDER | SWT.WRAP);
按钮选择目录;
按钮选择文件;
按钮验证=新按钮(外壳,SWT.PUSH);;
按钮复位=新按钮(外壳,SWT.按钮);;
字符串selectedDir;
字符串fileFilterPath=“F:/jdk1.5”;
公共选举(){
外壳。设置尺寸(10001000);
label.setBackground(display.getSystemColor(SWT.COLOR_-WHITE));
label.setText(“通过单击下面的按钮选择目录/文件”);
buttonSelectDir=新按钮(外壳,SWT.PUSH);
buttonSelectDir.setText(“选择目录”);
buttonSelectDir.addListener(SWT.Selection,new Listener()){
公共无效handleEvent(事件){
directoryDialog.setFilterPath(selectedDir);
setMessage(“请选择一个目录并单击确定”);
String dir=directoryDialog.open();
if(dir!=null){
//label.setText(“选定目录:+dir”);
selectedDir=dir;
int=0;
系统输出打印LN(sb);
字符串[]str=sb.split(“\n”);
对于(int i=0;i
我不知道有什么方法可以从不同的文件夹中选择更多的文件(不仅在SWT中,而且在Swing甚至OS中)

您的方法是好的,让用户通过在已经选择的文件之后添加新的选定文件(在以前的文件对话框中)来选择他/她想要的文件。将其写在GUI中文件选择按钮附近
JFileChooser fc = new JFileChooser();
fc.setMultiSelectionEnabled(true);