如何返回文件路径并在另一种方法中使用它?

时间:2016-12-18 11:29:35

标签: java

我想知道是否可以从JFileChooser返回文件路径,然后在另一种方法中使用该路径?

我没有运气就尝试了很多不同的事情。这看起来很基本,但我无法弄清楚。

任何人都想解释一下该做什么?

我的代码在这里:

public void run()
{

    //runs the program and adds it to the gui grid
    fieldObject.fromFile(selectedFile); //this is where i want to load the file to
    try {
          Solve(fieldObject, 0, 0);
        }
        catch (SolvedException e) {}
        System.out.println("Please select a file in the load menu first");

}



//The FileChooser method
static void FileChooser()
{
    JButton Chooser = new JButton();

    final JFileChooser fc = new JFileChooser();
    fc.setFileFilter(new FileNameExtensionFilter(".txt", "txt"));
    fc.setDialogTitle("Choose a txt file");
    if (fc.showOpenDialog(Chooser) == JFileChooser.APPROVE_OPTION)
    {

        File selectedFile = fc.getSelectedFile();

    }
    else if (fc.showOpenDialog(Chooser) == JFileChooser.CANCEL_OPTION)
    {
        System.out.println("canceled");
    }
    return selectedFile;
}

1 个答案:

答案 0 :(得分:1)

您使用返回类型FileChooser()修复了String方法:

static String FileChooser() {
    JButton Chooser = new JButton();
    final JFileChooser fc = new JFileChooser();
    fc.setFileFilter(new FileNameExtensionFilter(".txt", "txt"));
    fc.setDialogTitle("Choose a txt file");
    switch (fc.showOpenDialog(Chooser)) {
    case JFileChooser.APPROVE_OPTION:
        return fc.getSelectedFile().getAbsolutePath();
    default:
        System.out.println("canceled");
        return null;
    }
}

您可以将其用作:

String file = FileChooser();

修改

您希望将结果保存在第二个按钮单击中使用的字段中:

public class MyClass {
    private String path;

    public MyClass() {
        JButton b = new JButton("Button 1");
        b.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                path = FileChooser();
            }
        });
        JButton b2 = new JButton("Button 2");
        b2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //User 'path' variable here
                System.out.println(path);
            }
        });
    }

    static String FileChooser() {
        JButton Chooser = new JButton();
        final JFileChooser fc = new JFileChooser();
        fc.setFileFilter(new FileNameExtensionFilter(".txt", "txt"));
        fc.setDialogTitle("Choose a txt file");
        switch (fc.showOpenDialog(Chooser)) {
        case JFileChooser.APPROVE_OPTION:
            return fc.getSelectedFile().getAbsolutePath();
        default:
            System.out.println("canceled");
            return null;
        }
    }
}

<子> P.S。 - 我建议使用命名约定。例如。 - fileChooser()代替FileChooser()