Index: src/main/java/common/javax/swing/JFileChooser.java =================================================================== --- src/main/java/common/javax/swing/JFileChooser.java (revision 502202) +++ src/main/java/common/javax/swing/JFileChooser.java (working copy) @@ -472,6 +472,13 @@ public void setSelectedFile(final File file) { File oldValue = selectedFile; selectedFile = file; + + try { + currentDirectory = file.getAbsoluteFile().getParentFile().getCanonicalFile(); + } catch (java.io.IOException ioe) { + // + } + firePropertyChange(SELECTED_FILE_CHANGED_PROPERTY, oldValue, file); } Index: src/main/java/common/javax/swing/plaf/metal/MetalFileChooserUI.java =================================================================== --- src/main/java/common/javax/swing/plaf/metal/MetalFileChooserUI.java (revision 502202) +++ src/main/java/common/javax/swing/plaf/metal/MetalFileChooserUI.java (working copy) @@ -145,7 +145,7 @@ public void setSelectedItem(final Object selectedDirectory) { if (selectedItem != selectedDirectory) { selectedItem = selectedDirectory; - fireContentsChanged(this, 0, files.size() - 1); + //fireContentsChanged(this, 0, files.size() - 1); } } @@ -277,7 +277,7 @@ String changedProperty = e.getPropertyName(); if (JFileChooser.CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY.equals(changedProperty)) { filters = (FileFilter[])e.getNewValue(); - fireContentsChanged(this, 0, filters.length - 1); + //fireContentsChanged(this, 0, filters.length - 1); } else if (JFileChooser.FILE_FILTER_CHANGED_PROPERTY.equals(changedProperty)) { setSelectedItem(e.getNewValue()); if (!Arrays.asList(filters).contains(e.getNewValue())) { @@ -289,7 +289,7 @@ public void setSelectedItem(final Object filter) { selectedFilter = filter; getViewRepresentation().getSelectionModel().clearSelection(); - fireContentsChanged(this, -1, -1); + //fireContentsChanged(this, -1, -1); } public Object getSelectedItem() {