JFileChooser not showing up



我有一个将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);

根据有关如何使用文件选择器的 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);

如果父级为 null,则对话框依赖于不可见窗口, 它被放置在与外观和感觉相关的位置,例如 屏幕中央。

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

没有阻塞代码(正如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);

我个人发现第一个对话框会显示,但后续对话框不会显示。我通过在此代码中重用相同的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;
}

对于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页面通常在您使用Google搜索对象名称时找到。它们通常也是第一个出现的结果。

相关内容

  • 没有找到相关文章

最新更新