Class FolderChooser

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

    public class FolderChooser
    extends javax.swing.JFileChooser
    FolderChooser provides a simple mechanism for the user to choose a folder.

    In addition to supporting the basic folder choosing function, it also supports create new folder, delete an existing folder. Another useful feature is recent list. It allows you to set a list of recent selected folders so that user can choose them directly instead of navigating to it in the file system tree.

    The following code pops up a folder chooser for user to choose a folder.

        FolderChooser chooser = new FolderChooser();
        int returnVal = chooser.showOpenDialog(parent);
        if(returnVal == FolderChooser.APPROVE_OPTION) {
           System.out.println("You chose to open this file: " +
                chooser.getSelectedFile().getName());
        }
     
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JFileChooser

        javax.swing.JFileChooser.AccessibleJFileChooser
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int BUTTON_ALL  
      static int BUTTON_DELETE  
      static int BUTTON_DESKTOP  
      static int BUTTON_MY_DOCUMENTS  
      static int BUTTON_NEW  
      static int BUTTON_REFRESH  
      static java.lang.String PROPERTY_AVAILABLE_BUTTONS
      Property for _availableButtons.
      static java.lang.String PROPERTY_NAVIGATION_FIELD_VISIBLE
      Bound property for _navigationFieldVisible.
      static java.lang.String PROPERTY_RECENTLIST  
      static java.lang.String PROPERTY_RECENTLIST_VISIBLE  
      • Fields inherited from class javax.swing.JFileChooser

        ACCEPT_ALL_FILE_FILTER_USED_CHANGED_PROPERTY, accessibleContext, ACCESSORY_CHANGED_PROPERTY, APPROVE_BUTTON_MNEMONIC_CHANGED_PROPERTY, APPROVE_BUTTON_TEXT_CHANGED_PROPERTY, APPROVE_BUTTON_TOOL_TIP_TEXT_CHANGED_PROPERTY, APPROVE_OPTION, APPROVE_SELECTION, CANCEL_OPTION, CANCEL_SELECTION, CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY, CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY, CUSTOM_DIALOG, DIALOG_TITLE_CHANGED_PROPERTY, DIALOG_TYPE_CHANGED_PROPERTY, DIRECTORIES_ONLY, DIRECTORY_CHANGED_PROPERTY, ERROR_OPTION, FILE_FILTER_CHANGED_PROPERTY, FILE_HIDING_CHANGED_PROPERTY, FILE_SELECTION_MODE_CHANGED_PROPERTY, FILE_SYSTEM_VIEW_CHANGED_PROPERTY, FILE_VIEW_CHANGED_PROPERTY, FILES_AND_DIRECTORIES, FILES_ONLY, MULTI_SELECTION_ENABLED_CHANGED_PROPERTY, OPEN_DIALOG, SAVE_DIALOG, SELECTED_FILE_CHANGED_PROPERTY, SELECTED_FILES_CHANGED_PROPERTY
      • Fields inherited from class javax.swing.JComponent

        listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
      • Fields inherited from class java.awt.Component

        BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • Fields inherited from interface java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
    • Constructor Summary

      Constructors 
      Constructor Description
      FolderChooser()  
      FolderChooser​(java.io.File currentDirectory)  
      FolderChooser​(java.io.File currentDirectory, javax.swing.filechooser.FileSystemView fsv)  
      FolderChooser​(java.lang.String currentDirectoryPath)  
      FolderChooser​(java.lang.String currentDirectoryPath, javax.swing.filechooser.FileSystemView fsv)  
      FolderChooser​(javax.swing.filechooser.FileSystemView fsv)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int getAvailableButtons()
      Get the visibilities of each buttons on the title bar of dockable frame.
      java.util.Comparator<java.io.File> getFileComparator()
      Gets the comparator that will be used to compare the folders displayed in the FolderChooser.
      java.util.List<java.lang.String> getRecentList()
      Gets recent selected folder list.
      java.io.File getSelectedFolder()
      Returns the selected folder.
      java.lang.String getUIClassID()
      Returns a string that specifies the name of the L&F class that renders this component.
      boolean isNavigationFieldVisible()
      Determines whether the navigation text field is visible.
      boolean isRecentListVisible()
      Get the visibility of the recent list combobox.
      void setAvailableButtons​(int availableButtons)
      Set the visibilities of each buttons on the title bar of dockable frame.
      void setFileComparator​(java.util.Comparator<java.io.File> fileComparator)
      Sets the comparator that will be used to compare the folders displayed in the FolderChooser.
      void setFileFilter​(javax.swing.filechooser.FileFilter filter)  
      void setNavigationFieldVisible​(boolean navigationFieldVisible)
      Sets the navigation text fields visibility.
      void setRecentList​(java.util.List<java.lang.String> recentList)
      Sets the recent folder list.
      void setRecentListVisible​(boolean recentListVisible)
      Set the visibility of the recent list combobox.
      void setSelectedFolder​(java.io.File selectedFolder)
      Sets the selected folder.
      void updateUI()
      Resets the UI property to a value from the current look and feel.
      • Methods inherited from class javax.swing.JFileChooser

        accept, addActionListener, addChoosableFileFilter, approveSelection, cancelSelection, changeToParentDirectory, createDialog, ensureFileIsVisible, fireActionPerformed, getAcceptAllFileFilter, getAccessibleContext, getAccessory, getActionListeners, getApproveButtonMnemonic, getApproveButtonText, getApproveButtonToolTipText, getChoosableFileFilters, getControlButtonsAreShown, getCurrentDirectory, getDescription, getDialogTitle, getDialogType, getDragEnabled, getFileFilter, getFileSelectionMode, getFileSystemView, getFileView, getIcon, getName, getSelectedFile, getSelectedFiles, getTypeDescription, getUI, isAcceptAllFileFilterUsed, isDirectorySelectionEnabled, isFileHidingEnabled, isFileSelectionEnabled, isMultiSelectionEnabled, isTraversable, paramString, removeActionListener, removeChoosableFileFilter, rescanCurrentDirectory, resetChoosableFileFilters, setAcceptAllFileFilterUsed, setAccessory, setApproveButtonMnemonic, setApproveButtonMnemonic, setApproveButtonText, setApproveButtonToolTipText, setControlButtonsAreShown, setCurrentDirectory, setDialogTitle, setDialogType, setDragEnabled, setFileHidingEnabled, setFileSelectionMode, setFileSystemView, setFileView, setMultiSelectionEnabled, setSelectedFile, setSelectedFiles, setup, showDialog, showOpenDialog, showSaveDialog
      • Methods inherited from class javax.swing.JComponent

        addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class java.awt.Component

        action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • FolderChooser

        public FolderChooser()
      • FolderChooser

        public FolderChooser​(java.lang.String currentDirectoryPath)
      • FolderChooser

        public FolderChooser​(java.io.File currentDirectory)
      • FolderChooser

        public FolderChooser​(javax.swing.filechooser.FileSystemView fsv)
      • FolderChooser

        public FolderChooser​(java.io.File currentDirectory,
                             javax.swing.filechooser.FileSystemView fsv)
      • FolderChooser

        public FolderChooser​(java.lang.String currentDirectoryPath,
                             javax.swing.filechooser.FileSystemView fsv)
    • Method Detail

      • getRecentList

        public java.util.List<java.lang.String> getRecentList()
        Gets recent selected folder list. The element in the list is File.
        Returns:
        the recent selected folder list.
      • setRecentList

        public void setRecentList​(java.util.List<java.lang.String> recentList)
        Sets the recent folder list. The element in the list should be File. Property change event on PROPERTY_RECENTLIST will be fired when recent folder list is changed.
        Parameters:
        recentList - the recent folder list.
      • updateUI

        public void updateUI()
        Resets the UI property to a value from the current look and feel.
        Overrides:
        updateUI in class javax.swing.JFileChooser
        See Also:
        JComponent.updateUI()
      • getUIClassID

        public java.lang.String getUIClassID()
        Returns a string that specifies the name of the L&F class that renders this component.
        Overrides:
        getUIClassID in class javax.swing.JFileChooser
        Returns:
        the string "FolderChooserUI"
        See Also:
        JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)
      • getSelectedFolder

        public java.io.File getSelectedFolder()
        Returns the selected folder. This can be set either by the programmer via setSelectedFolder or by a user action, such as selecting the folder from a 'folder tree' in the UI.
        Returns:
        the selected folder in the folder tree
        See Also:
        setSelectedFolder(java.io.File)
      • setSelectedFolder

        public void setSelectedFolder​(java.io.File selectedFolder)
        Sets the selected folder.

        Property change event JFileChooser.SELECTED_FILE_CHANGED_PROPERTY will be fired when a new folder is selected.
        Parameters:
        selectedFolder - the selected folder
        See Also:
        getSelectedFolder()
      • setNavigationFieldVisible

        public void setNavigationFieldVisible​(boolean navigationFieldVisible)
        Sets the navigation text fields visibility.
        Parameters:
        navigationFieldVisible - if true, the navigation text field is displayed; otherwise it is hidden.
      • isNavigationFieldVisible

        public boolean isNavigationFieldVisible()
        Determines whether the navigation text field is visible.
        Returns:
        true if the navigation text field is visible; otherwise false.
      • getAvailableButtons

        public int getAvailableButtons()
        Get the visibilities of each buttons on the title bar of dockable frame.
        Returns:
        the visibilities of each buttons. It's a bit wise OR of values specified at BUTTON_XXX.
      • setAvailableButtons

        public void setAvailableButtons​(int availableButtons)
        Set the visibilities of each buttons on the title bar of dockable frame.
        Parameters:
        availableButtons - the visibilities of each buttons. It's a bit wise OR of values specified at BUTTON_XXX.
      • isRecentListVisible

        public boolean isRecentListVisible()
        Get the visibility of the recent list combobox.
        Returns:
        the visibility of the combobox.
      • setRecentListVisible

        public void setRecentListVisible​(boolean recentListVisible)
        Set the visibility of the recent list combobox.
        Parameters:
        recentListVisible - the visibility of the combobox
      • setFileFilter

        public void setFileFilter​(javax.swing.filechooser.FileFilter filter)
        Overrides:
        setFileFilter in class javax.swing.JFileChooser
      • getFileComparator

        public java.util.Comparator<java.io.File> getFileComparator()
        Gets the comparator that will be used to compare the folders displayed in the FolderChooser. This comparator will determine the order of the folders. It returns null by default.
        Returns:
        the Comparator.
      • setFileComparator

        public void setFileComparator​(java.util.Comparator<java.io.File> fileComparator)
        Sets the comparator that will be used to compare the folders displayed in the FolderChooser. This comparator will determine the order of the folders. For example, you can use AlphanumFileComparator to sort the folder alphanum-ly.
        Parameters:
        fileComparator - a new Comparator.