JFileChooser事件

4

我有一个名为“搜索”的按钮,它会打开一个JFileChooser窗口。在双击目录后,该窗口应自动关闭,无需点击取消或任何其他按钮。这是可能的吗?

谢谢。

1个回答

4
您可以通过向 JFileChooser 添加 PropertyChangeListener 来实现此功能。在 propertyChange() 方法中,检查属性名称是否为 JFileChooser.DIRECTORY_CHANGED_PROPERTY。如果是,则只需调用 JFileChooser.approveSelection() 方法即可关闭文件选择对话框。
注:由于选择文件夹会自动关闭文件选择器,在这种情况下,将文件选择器(用户)直接指向用户可以选择所需文件夹的文件夹是很重要的。为此,请使用 JFileChooser 的构造函数设置初始/当前文件夹(您可以将文件夹作为 FileString 传递),或者可以在构造函数后通过调用 JFileChooser.setCurrentDirectory() 来设置它。
以下是完整示例:
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JButton b = new JButton("test");
b.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JFileChooser fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

        fc.addPropertyChangeListener(new PropertyChangeListener() {
            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                if (JFileChooser.DIRECTORY_CHANGED_PROPERTY.equals(
                        evt.getPropertyName())) {
                    System.out.println("DIRECTORY CHANGED");
                    fc.approveSelection();
                }
            }
        });

        int result = fc.showOpenDialog(f);
        if (result == JFileChooser.APPROVE_OPTION) {
            System.out.println("Chosen folder: " + fc.getSelectedFile());
        }
    }
});
f.add(b);

f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接