我有一个名为“搜索”的按钮,它会打开一个JFileChooser
窗口。在双击目录后,该窗口应自动关闭,无需点击取消或任何其他按钮。这是可能的吗?
谢谢。
我有一个名为“搜索”的按钮,它会打开一个JFileChooser
窗口。在双击目录后,该窗口应自动关闭,无需点击取消或任何其他按钮。这是可能的吗?
谢谢。
JFileChooser
添加 PropertyChangeListener
来实现此功能。在 propertyChange()
方法中,检查属性名称是否为 JFileChooser.DIRECTORY_CHANGED_PROPERTY
。如果是,则只需调用 JFileChooser.approveSelection()
方法即可关闭文件选择对话框。JFileChooser
的构造函数设置初始/当前文件夹(您可以将文件夹作为 File
或 String
传递),或者可以在构造函数后通过调用 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);