我需要在javax.swing.JFileChooser
中标记为“文件名”的文本字段中获取最新的文字字段。
我不需要最新选择的文件,因为输入“文件名”的文本应该作为新创建文件的名称。
我使用SELECTED_FILE_CHANGED_PROPERTY,但只在文件选择时触发。 还有FILE_FILTER_CHANGED_PROPERTY,但是当我更改文件类型时会触发它。
如何收听“文件名”文本字段的更改?
谢谢!
答案 0 :(得分:2)
注意:仅当选择了单个项目时才会触发SELECTED_FILE_CHANGED_PROPERTY
个事件。
特别是,如果在启用多选模式时选择了多个项目,则不会触发此事件。但是,如果在多选模式下选择了单个项目,则会触发此事件。
当处于多选模式时,无论是否选择了单个或多个文件,都会触发SELECTED_FILES_CHANGED_PROPERTY
个事件。
JFileChooser chooser = new JFileChooser();
// Add listener on chooser to detect changes to selected file
chooser.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (JFileChooser.SELECTED_FILE_CHANGED_PROPERTY
.equals(evt.getPropertyName())) {
JFileChooser chooser = (JFileChooser)evt.getSource();
File oldFile = (File)evt.getOldValue();
File newFile = (File)evt.getNewValue();
// The selected file should always be the same as newFile
File curFile = chooser.getSelectedFile();
} else if (JFileChooser.SELECTED_FILES_CHANGED_PROPERTY.equals(
evt.getPropertyName())) {
JFileChooser chooser = (JFileChooser)evt.getSource();
File[] oldFiles = (File[])evt.getOldValue();
File[] newFiles = (File[])evt.getNewValue();
// Get list of selected files
// The selected files should always be the same as newFiles
File[] files = chooser.getSelectedFiles();
}
}
}) ;
答案 1 :(得分:1)
你想要的是带有JFileChooser
旗帜的SAVE_DIALOG
。
一些演示代码:
JFileChooser chooser = new JFileChooser("some path");
chooser.setDialogType(JFileChooser.SAVE_DIALOG);
// Stuff like setting the required file extension, the title, ...
int result = chooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
String path = chooser.getSelectedFile().toString();
// Do something with the path
}
chooser.setVisible(false); // Don't forget to hide