3

我有一个将txt文件作为输入的方法。我曾经通过键入文件的直接路径来使用字符串。但是每当我尝试使用不同的文件进行输入时,它就变得很麻烦。我尝试实施JFileChooser但没有运气。

这是代码,但什么也没发生。

public static JFileChooser choose;
File directory = new File("B:\\");
choose = new JFileChooser(directory);
choose.setVisible(true);        
File openFile = choose.getSelectedFile();

FileReader fR = new FileReader(openFile);
BufferedReader br = new BufferedReader(fR);
4

4 回答 4

6

根据有关如何使用文件选择器的Java 教程:

调出标准的打开对话框只需要两行代码:

//Create a file chooser
final JFileChooser fc = new JFileChooser();
...
//In response to a button click:
int returnVal = fc.showOpenDialog(aComponent);

showOpenDialog 方法的参数指定对话框的父组件。父组件影响对话框的位置和对话框所依赖的框架。

请注意,根据文档,它也可以是:

int returnVal = fc.showOpenDialog(null);

如果 parent 为 null,则对话框不依赖于可见窗口,并且它被放置在与外观相关的位置,例如屏幕中心。

如果您还没有,  也可以阅读Swing 中的并发。

于 2013-02-01T05:13:49.177 回答
2

没有阻塞代码(正如 David Kroukamp 建议的那样)。它解决了“不显示”的问题。

Runnable r = new Runnable() {

@Override
public void run() {
    JFileChooser jfc = new JFileChooser();
    jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    if( jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION ){
        selected = jfc.getSelectedFile();
    }
}
}
SwingUtilities.invokeLater(r);
于 2014-09-23T14:43:01.860 回答
1

我个人发现第一个对话框会显示,但后续对话框不会显示。我通过使用此代码重用相同的 JFileChooser 来修复它。

JFileChooser jfc = new JFileChooser();
File jar = selectFile(jfc, "Select jar to append to");
File append = selectFile(jfc, "Select file to append");

//When done, remove the window
jfc.setVisible(false);

public static File selectFile(JFileChooser jfc, String msg) {
    if (!jfc.isVisible()) {
        jfc.setVisible(true);
        jfc.requestFocus();
    }

    int returncode = jfc.showDialog(null, msg);
    if (returncode == JFileChooser.APPROVE_OPTION) return jfc.getSelectedFile();
    return null;
}
于 2019-07-12T11:30:41.260 回答
0

对于JFileChoosers,您应该调用objectName.showOpenDialog(Component parent)objectName.showOpenDialog(Component parent)。这些方法将返回一个整数,您可以使用该整数与 JFileChooser 中设置的静态常量进行比较,以确定用户是单击取消还是打开/保存。然后,您可以使用getSelectedFile()来检索用户选择的文件。

例如(可能有小错误):

class Example {
    public static void main(String[] args) {
        JFileChooser jfc = new JFileChooser();
        File selected;

        if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
            selected = jfc.getSelectedFile();
        }
    }
}

Java API 是一个很好的资源,可以用来确定哪些对象可以做什么以及如何做。这是页面JFileChoosers

当您搜索对象名称时,通常会找到 API 页面。他们通常也是第一个出现的结果。

于 2013-02-01T05:18:56.107 回答