我有一个将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搜索对象名称时找到。它们通常也是第一个出现的结果。