JavaFX中是否有返回File类型、类似getSelectedFile的方法?
问题解答
JavaFX 的 FileChooser 不存在和 Swing 组件 JFileChooser.getSelectedFile() 同名、同调用逻辑的方法,但你需要的「获取用户选中的File类型对象」的功能直接内置在弹窗调用方法里。
你当前的代码其实已经拿到了选中的文件对象:FileChooser.showOpenDialog(stage) 方法会在用户完成选择/取消操作前阻塞执行,返回值就是目标结果:
- 用户选中文件确认后,直接返回对应
File类型的对象 - 用户点击取消关闭弹窗时,返回
null
你已经做了非空判断,只需要直接把拿到的file变量赋值给fileToSend[0]即可,不需要额外调用不存在的getSelectedFile()方法。
修正后的完整逻辑代码如下:
@FXML private void chooseButtonAction(ActionEvent event) throws IOException { FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Choose a file to send"); Stage stage = (Stage) anchorPane.getScene().getWindow(); File selectedFile = fileChooser.showOpenDialog(stage); if (selectedFile != null) { fileToSend[0] = selectedFile; fileName.setText("File Name " + selectedFile.getName()); } }
注:原代码里把
FileChooser实例命名为JFileChooser容易和Swing的同名类混淆,改成小驼峰格式的fileChooser可读性更好,不修改也不会影响功能运行。如果需要支持用户多选文件,把showOpenDialog换成showOpenMultipleDialog(stage)即可,该方法返回值为List<File>类型,对应所有选中的文件对象。
内容的提问来源于stack exchange,提问作者Parvez Ahammed
相关产品推荐
相关产品推荐

