我已经使用SwingNode将JFileChooser集成到JavaFX应用程序中。该对话框显示并可用,但是我不确定如何从中获取所选文件。
谢谢你的帮助。
@FXML
public void openDialog(MouseEvent event) {
SwingNode swingNode = new SwingNode();
SwingUtilities.invokeLater(() -> {
swingNode.setContent(fileChooser);
});
BorderPane pane = new BorderPane();
pane.setCenter(swingNode);
Stage stage = new Stage();
Scene scene = new Scene(pane, 500, 500);
stage.setScene(scene);
stage.show();
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您的JavaFX应用程序中,您已经成功地使用SwingNode
来集成和显示JFileChooser
。为了从JFileChooser
获取所选文件,您需要为它添加一个监听器或者处理程序来响应文件选择事件。下面是如何修改您的代码以实现这一功能的示例:
首先,确保您的JFileChooser
实例(我假设是fileChooser
)已经被正确初始化,并且添加了适当的监听器来处理文件选择事件。这里是一个简单的例子,展示了如何添加一个ActionListener
到JFileChooser
的approveSelection
方法上,当用户点击"打开"或双击文件时触发。
@FXML
public void openDialog(MouseEvent event) {
final JFileChooser fileChooser = new JFileChooser(); // 确保这已经初始化
SwingUtilities.invokeLater(() -> {
// 设置文件选择器的属性、过滤器等...
// 添加一个监听器来处理文件批准事件(即用户选择了文件并确认)
fileChooser.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION)) {
File selectedFile = fileChooser.getSelectedFile();
// 在这里处理所选文件,例如打印文件路径
System.out.println("Selected File: " + selectedFile.getAbsolutePath());
// 如果需要,您可以将所选文件信息传递回JavaFX应用的其他部分
// 例如,通过调用某个方法或设置一个绑定的属性
}
}
});
SwingNode swingNode = new SwingNode();
swingNode.setContent(fileChooser);
BorderPane pane = new BorderPane();
pane.setCenter(swingNode);
Stage stage = new Stage();
Scene scene = new Scene(pane, 500, 500);
stage.setScene(scene);
stage.show();
});
}
这段代码的关键在于给JFileChooser
添加了一个ActionListener
,该监听器会在用户完成文件选择并点击“打开”按钮时被触发。然后,通过getSelectedFile()
方法获取用户所选的文件,并进行相应的处理。请根据您的具体需求调整文件处理逻辑。