MetalFileChooserUI (Java Platform SE 8 )
Keywords: javax.swing.plaf.metal.MetalFileChooserUI class
Date: 2026-01-21

javax.swing.plaf.metal

## Class MetalFileChooserUI

- java.lang.Object
- - javax.swing.plaf.ComponentUI
  - - javax.swing.plaf.FileChooserUI
    - - javax.swing.plaf.basic.BasicFileChooserUI
      - - javax.swing.plaf.metal.MetalFileChooserUI

-     public class MetalFileChooserUI
      extends BasicFileChooserUI

  Metal L&F implementation of a FileChooser.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected class` | `MetalFileChooserUI.DirectoryComboBoxAction` Acts when DirectoryComboBox has changed the selected item.
    `protected class` | `MetalFileChooserUI.DirectoryComboBoxModel` Data model for a type-face selection combo-box.
    `protected class` | `MetalFileChooserUI.FileRenderer`
    `protected class` | `MetalFileChooserUI.FilterComboBoxModel` Data model for a type-face selection combo-box.
    `class` | `MetalFileChooserUI.FilterComboBoxRenderer` Render different type sizes and styles.
    `protected class` | `MetalFileChooserUI.SingleClickListener`

    - ### Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicFileChooserUI

      `BasicFileChooserUI.AcceptAllFileFilter, BasicFileChooserUI.ApproveSelectionAction, BasicFileChooserUI.BasicFileView, BasicFileChooserUI.CancelSelectionAction, BasicFileChooserUI.ChangeToParentDirectoryAction, BasicFileChooserUI.DoubleClickListener, BasicFileChooserUI.GoHomeAction, BasicFileChooserUI.NewFolderAction, BasicFileChooserUI.SelectionListener, BasicFileChooserUI.UpdateAction`

  - ### Field Summary

    - ### Fields inherited from class javax.swing.plaf.basic.BasicFileChooserUI

      `cancelButtonMnemonic, cancelButtonText, cancelButtonToolTipText, computerIcon, detailsViewIcon, directoryIcon, directoryOpenButtonMnemonic, directoryOpenButtonText, directoryOpenButtonToolTipText, fileIcon, floppyDriveIcon, hardDriveIcon, helpButtonMnemonic, helpButtonText, helpButtonToolTipText, homeFolderIcon, listViewIcon, newFolderIcon, openButtonMnemonic, openButtonText, openButtonToolTipText, saveButtonMnemonic, saveButtonText, saveButtonToolTipText, updateButtonMnemonic, updateButtonText, updateButtonToolTipText, upFolderIcon, viewMenuIcon`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MetalFileChooserUI(JFileChooser filechooser)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addControlButtons()`
    `protected ActionMap` | `createActionMap()`
    `protected JPanel` | `createDetailsView(JFileChooser fc)`
    `protected MetalFileChooserUI.DirectoryComboBoxModel` | `createDirectoryComboBoxModel(JFileChooser fc)`
    `protected javax.swing.plaf.metal.MetalFileChooserUI.DirectoryComboBoxRenderer` | `createDirectoryComboBoxRenderer(JFileChooser fc)`
    `protected MetalFileChooserUI.FilterComboBoxModel` | `createFilterComboBoxModel()`
    `protected MetalFileChooserUI.FilterComboBoxRenderer` | `createFilterComboBoxRenderer()`
    `protected JPanel` | `createList(JFileChooser fc)`
    `ListSelectionListener` | `createListSelectionListener(JFileChooser fc)` Creates a selection listener for the list of files and directories.
    `PropertyChangeListener` | `createPropertyChangeListener(JFileChooser fc)`
    `static ComponentUI` | `createUI(JComponent c)`
    `void` | `ensureFileIsVisible(JFileChooser fc, File f)`
    `protected ActionMap` | `getActionMap()`
    `protected JButton` | `getApproveButton(JFileChooser fc)`
    `protected JPanel` | `getBottomPanel()`
    `protected JPanel` | `getButtonPanel()`
    `String` | `getDirectoryName()`
    `String` | `getFileName()`
    `Dimension` | `getMaximumSize(JComponent c)` Returns the maximum size of the `JFileChooser`.
    `Dimension` | `getMinimumSize(JComponent c)` Returns the minimum size of the `JFileChooser`.
    `Dimension` | `getPreferredSize(JComponent c)` Returns the preferred size of the specified `JFileChooser`.
    `void` | `installComponents(JFileChooser fc)`
    `protected void` | `installListeners(JFileChooser fc)`
    `protected void` | `installStrings(JFileChooser fc)`
    `void` | `installUI(JComponent c)` Configures the specified component appropriately for the look and feel.
    `protected void` | `removeControlButtons()`
    `void` | `rescanCurrentDirectory(JFileChooser fc)`
    `void` | `setDirectoryName(String dirname)`
    `protected void` | `setDirectorySelected(boolean directorySelected)` Property to remember whether a directory is currently selected in the UI.
    `void` | `setFileName(String filename)`
    `void` | `uninstallComponents(JFileChooser fc)`
    `void` | `uninstallUI(JComponent c)` Reverses configuration which was done on the specified component during `installUI`.
    `void` | `valueChanged(ListSelectionEvent e)`

    - ### Methods inherited from class javax.swing.plaf.basic.BasicFileChooserUI

      `clearIconCache, createDoubleClickListener, createModel, getAcceptAllFileFilter, getAccessoryPanel, getApproveButtonMnemonic, getApproveButtonText, getApproveButtonToolTipText, getApproveSelectionAction, getCancelSelectionAction, getChangeToParentDirectoryAction, getDefaultButton, getDialogTitle, getDirectory, getFileChooser, getFileView, getGoHomeAction, getModel, getNewFolderAction, getUpdateAction, installDefaults, installIcons, isDirectorySelected, setDirectory, uninstallDefaults, uninstallIcons, uninstallListeners, uninstallStrings`

    - ### Methods inherited from class javax.swing.plaf.ComponentUI

      `contains, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, paint, update`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### MetalFileChooserUI

          public MetalFileChooserUI(JFileChooser filechooser)

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI(JComponent c)

    - #### installUI

          public void installUI(JComponent c)

      Description copied from class: `ComponentUI`
      Configures the specified component appropriately for the look and feel. This method is invoked when the `ComponentUI` instance is being installed as the UI delegate on the specified component. This method should completely configure the component for the look and feel, including the following:
      1. Install default property values for color, fonts, borders, icons, opacity, etc. on the component. Whenever possible, property values initialized by the client program should not be overridden.
      2. Install a `LayoutManager` on the component if necessary.
      3. Create/add any required sub-components to the component.
      4. Create/install event listeners on the component.
      5. Create/install a `PropertyChangeListener` on the component in order to detect and respond to component property changes appropriately.
      6. Install keyboard UI (mnemonics, traversal, etc.) on the component.
      7. Initialize any appropriate instance data.
      Overrides:
        `installUI` in class `BasicFileChooserUI`
      Parameters:
        `c` - the component where this UI delegate is being installed
      See Also:
        `ComponentUI.uninstallUI(javax.swing.JComponent)`, `JComponent.setUI(javax.swing.plaf.ComponentUI)`, `JComponent.updateUI()`

    - #### uninstallComponents

          public void uninstallComponents(JFileChooser fc)

      Overrides:
        `uninstallComponents` in class `BasicFileChooserUI`

    - #### installComponents

          public void installComponents(JFileChooser fc)

      Overrides:
        `installComponents` in class `BasicFileChooserUI`

    - #### getButtonPanel

          protected JPanel getButtonPanel()

    - #### getBottomPanel

          protected JPanel getBottomPanel()

    - #### installStrings

          protected void installStrings(JFileChooser fc)

      Overrides:
        `installStrings` in class `BasicFileChooserUI`

    - #### installListeners

          protected void installListeners(JFileChooser fc)

      Overrides:
        `installListeners` in class `BasicFileChooserUI`

    - #### getActionMap

          protected ActionMap getActionMap()

    - #### createActionMap

          protected ActionMap createActionMap()

    - #### createList

          protected JPanel createList(JFileChooser fc)

    - #### createDetailsView

          protected JPanel createDetailsView(JFileChooser fc)

    - #### createListSelectionListener

          public ListSelectionListener createListSelectionListener(JFileChooser fc)

      Creates a selection listener for the list of files and directories.
      Overrides:
        `createListSelectionListener` in class `BasicFileChooserUI`
      Parameters:
        `fc` - a `JFileChooser`
      Returns:
        a `ListSelectionListener`

    - #### uninstallUI

          public void uninstallUI(JComponent c)

      Description copied from class: `ComponentUI`
      Reverses configuration which was done on the specified component during `installUI`. This method is invoked when this `UIComponent` instance is being removed as the UI delegate for the specified component. This method should undo the configuration performed in `installUI`, being careful to leave the `JComponent` instance in a clean state (no extraneous listeners, look-and-feel-specific property objects, etc.). This should include the following:
      1. Remove any UI-set borders from the component.
      2. Remove any UI-set layout managers on the component.
      3. Remove any UI-added sub-components from the component.
      4. Remove any UI-added event/property listeners from the component.
      5. Remove any UI-installed keyboard UI from the component.
      6. Nullify any allocated instance data objects to allow for GC.
      Overrides:
        `uninstallUI` in class `BasicFileChooserUI`
      Parameters:
        `c` - the component from which this UI delegate is being removed; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
      See Also:
        `ComponentUI.installUI(javax.swing.JComponent)`, `JComponent.updateUI()`

    - #### getPreferredSize

          public Dimension getPreferredSize(JComponent c)

      Returns the preferred size of the specified `JFileChooser`. The preferred size is at least as large, in both height and width, as the preferred size recommended by the file chooser's layout manager.
      Overrides:
        `getPreferredSize` in class `ComponentUI`
      Parameters:
        `c` - a `JFileChooser`
      Returns:
        a `Dimension` specifying the preferred width and height of the file chooser
      See Also:
        `JComponent.getPreferredSize()`, `LayoutManager.preferredLayoutSize(java.awt.Container)`

    - #### getMinimumSize

          public Dimension getMinimumSize(JComponent c)

      Returns the minimum size of the `JFileChooser`.
      Overrides:
        `getMinimumSize` in class `ComponentUI`
      Parameters:
        `c` - a `JFileChooser`
      Returns:
        a `Dimension` specifying the minimum width and height of the file chooser
      See Also:
        `JComponent.getMinimumSize()`, `LayoutManager.minimumLayoutSize(java.awt.Container)`, `ComponentUI.getPreferredSize(javax.swing.JComponent)`

    - #### getMaximumSize

          public Dimension getMaximumSize(JComponent c)

      Returns the maximum size of the `JFileChooser`.
      Overrides:
        `getMaximumSize` in class `ComponentUI`
      Parameters:
        `c` - a `JFileChooser`
      Returns:
        a `Dimension` specifying the maximum width and height of the file chooser
      See Also:
        `JComponent.getMaximumSize()`, `LayoutManager2.maximumLayoutSize(java.awt.Container)`

    - #### createPropertyChangeListener

          public PropertyChangeListener createPropertyChangeListener(JFileChooser fc)

      Overrides:
        `createPropertyChangeListener` in class `BasicFileChooserUI`

    - #### removeControlButtons

          protected void removeControlButtons()

    - #### addControlButtons

          protected void addControlButtons()

    - #### ensureFileIsVisible

          public void ensureFileIsVisible(JFileChooser fc,
                                          File f)

      Overrides:
        `ensureFileIsVisible` in class `BasicFileChooserUI`

    - #### rescanCurrentDirectory

          public void rescanCurrentDirectory(JFileChooser fc)

      Overrides:
        `rescanCurrentDirectory` in class `BasicFileChooserUI`

    - #### getFileName

          public String getFileName()

      Overrides:
        `getFileName` in class `BasicFileChooserUI`

    - #### setFileName

          public void setFileName(String filename)

      Overrides:
        `setFileName` in class `BasicFileChooserUI`

    - #### setDirectorySelected

          protected void setDirectorySelected(boolean directorySelected)

      Property to remember whether a directory is currently selected in the UI. This is normally called by the UI on a selection event.
      Overrides:
        `setDirectorySelected` in class `BasicFileChooserUI`
      Parameters:
        `directorySelected` - if a directory is currently selected.
      Since:
        1.4

    - #### getDirectoryName

          public String getDirectoryName()

      Overrides:
        `getDirectoryName` in class `BasicFileChooserUI`

    - #### setDirectoryName

          public void setDirectoryName(String dirname)

      Overrides:
        `setDirectoryName` in class `BasicFileChooserUI`

    - #### createDirectoryComboBoxRenderer

          protected javax.swing.plaf.metal.MetalFileChooserUI.DirectoryComboBoxRenderer createDirectoryComboBoxRenderer(JFileChooser fc)

    - #### createDirectoryComboBoxModel

          protected MetalFileChooserUI.DirectoryComboBoxModel createDirectoryComboBoxModel(JFileChooser fc)

    - #### createFilterComboBoxRenderer

          protected MetalFileChooserUI.FilterComboBoxRenderer createFilterComboBoxRenderer()

    - #### createFilterComboBoxModel

          protected MetalFileChooserUI.FilterComboBoxModel createFilterComboBoxModel()

    - #### valueChanged

          public void valueChanged(ListSelectionEvent e)

    - #### getApproveButton

          protected JButton getApproveButton(JFileChooser fc)

      Overrides:
        `getApproveButton` in class `BasicFileChooserUI`

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.