开发者社区 问答 正文

JavaFX使用SwingNode嵌入JFileChooser并获取所选文件

我已经使用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();
}

展开
收起
几许相思几点泪 2019-12-16 20:17:09 709 分享 版权
阿里云 AI 助理回答

在您的JavaFX应用程序中,您已经成功地使用SwingNode来集成和显示JFileChooser。为了从JFileChooser获取所选文件,您需要为它添加一个监听器或者处理程序来响应文件选择事件。下面是如何修改您的代码以实现这一功能的示例:

首先,确保您的JFileChooser实例(我假设是fileChooser)已经被正确初始化,并且添加了适当的监听器来处理文件选择事件。这里是一个简单的例子,展示了如何添加一个ActionListenerJFileChooserapproveSelection方法上,当用户点击"打开"或双击文件时触发。

@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()方法获取用户所选的文件,并进行相应的处理。请根据您的具体需求调整文件处理逻辑。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: