⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basicfilechooserui.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
  /** Text box that displays file name */  JTextField entry;      /** Current parent path */  String parentPath;    // -- end private --  private class ListLabelRenderer extends JLabel implements ListCellRenderer  {    /** DOCUMENT ME! */    final Color selected = new Color(153, 204, 255);    /**     * Creates a new ListLabelRenderer object.     */    public ListLabelRenderer()    {      super();      setOpaque(true);    }    /**     * DOCUMENT ME!     *     * @param list DOCUMENT ME!     * @param value DOCUMENT ME!     * @param index DOCUMENT ME!     * @param isSelected DOCUMENT ME!     * @param cellHasFocus DOCUMENT ME!     *     * @return DOCUMENT ME!     */    public Component getListCellRendererComponent(JList list, Object value,                                                  int index,                                                  boolean isSelected,                                                  boolean cellHasFocus)    {      setHorizontalAlignment(SwingConstants.LEFT);      File file = (File) value;      setText(filechooser.getName(file));      setIcon(filechooser.getIcon(file));      setBackground(isSelected ? selected : Color.WHITE);      setForeground(Color.BLACK);      return this;    }  }  /**   * Closes the dialog.   */  void closeDialog()  {    Window owner = SwingUtilities.windowForComponent(filechooser);    if (owner instanceof JDialog)      ((JDialog) owner).dispose();  }  /**   * Creates a new <code>BasicFileChooserUI</code> object.   *   * @param b  the file chooser component.   */  public BasicFileChooserUI(JFileChooser b)  {    this.filechooser = b;  }  /**   * Returns a UI delegate for the given component.   *   * @param c  the component (should be a {@link JFileChooser}).   *   * @return A new UI delegate.   */  public static ComponentUI createUI(JComponent c)  {    return new BasicFileChooserUI((JFileChooser) c);  }  /**   * Installs the UI for the specified component.   *    * @param c  the component (should be a {@link JFileChooser}).   */  public void installUI(JComponent c)  {    if (c instanceof JFileChooser)      {        JFileChooser fc = (JFileChooser) c;        fc.resetChoosableFileFilters();        createModel();        clearIconCache();        installDefaults(fc);        installComponents(fc);        installListeners(fc);                Object path = filechooser.getCurrentDirectory();        if (path != null)          parentPath = path.toString().substring(path.toString().lastIndexOf("/"));      }  }  /**   * Uninstalls this UI from the given component.   *    * @param c  the component (should be a {@link JFileChooser}).   */  public void uninstallUI(JComponent c)  {    model = null;    uninstallListeners(filechooser);    uninstallComponents(filechooser);    uninstallDefaults(filechooser);    filechooser = null;  }  // FIXME: Indent the entries in the combobox  // Made this method package private to access it from within inner classes  // with better performance  void boxEntries()  {    ArrayList parentFiles = new ArrayList();    File parent = filechooser.getCurrentDirectory();    if (parent == null)      parent = filechooser.getFileSystemView().getDefaultDirectory();    while (parent != null)      {        String name = parent.getName();        if (name.equals(""))          name = parent.getAbsolutePath();        parentFiles.add(parentFiles.size(), name);        parent = parent.getParentFile();      }    if (parentFiles.size() == 0)      return;    if (parents.getItemCount() > 0)      parents.removeAllItems();    for (int i = parentFiles.size() - 1; i >= 0; i--)      parents.addItem(parentFiles.get(i));    parents.setSelectedIndex(parentFiles.size() - 1);    parents.revalidate();    parents.repaint();  }  /**   * DOCUMENT ME!   *   * @return DOCUMENT ME!   */  private ItemListener createBoxListener()  {    return new ItemListener()      {	public void itemStateChanged(ItemEvent e)	{	  if (parents.getItemCount() - 1 == parents.getSelectedIndex())	    return;	  StringBuffer dir = new StringBuffer();	  for (int i = 0; i <= parents.getSelectedIndex(); i++)	    {	      dir.append(parents.getItemAt(i));	      dir.append(File.separatorChar);	    }	  filechooser.setCurrentDirectory(filechooser.getFileSystemView()	                                             .createFileObject(dir	                                                               .toString()));	}      };  }  /**   * DOCUMENT ME!   *   * @return DOCUMENT ME!   */  private ItemListener createFilterListener()  {    return new ItemListener()      {	public void itemStateChanged(ItemEvent e)	{	  int index = filters.getSelectedIndex();	  if (index == -1)	    return;	  filechooser.setFileFilter(filechooser.getChoosableFileFilters()[index]);	}      };  }  void filterEntries()  {    FileFilter[] list = filechooser.getChoosableFileFilters();    if (filters.getItemCount() > 0)      filters.removeAllItems();    int index = -1;    String selected = filechooser.getFileFilter().getDescription();    for (int i = 0; i < list.length; i++)      {	if (selected.equals(list[i].getDescription()))	  index = i;	filters.addItem(list[i].getDescription());      }    filters.setSelectedIndex(index);    filters.revalidate();    filters.repaint();  }  /**   * Creates and install the subcomponents for the file chooser.   *   * @param fc  the file chooser.   */  public void installComponents(JFileChooser fc)  {    JLabel look = new JLabel("Look In:");    parents = new JComboBox();    parents.setRenderer(new BasicComboBoxRenderer());    boxEntries();    look.setLabelFor(parents);    JPanel parentsPanel = new JPanel();    parentsPanel.add(look);    parentsPanel.add(parents);    JPanel buttonPanel = new JPanel();    upFolderButton = new JButton();    upFolderButton.setIcon(upFolderIcon);    buttonPanel.add(upFolderButton);    homeFolderButton = new JButton();    homeFolderButton = new JButton(homeFolderIcon);    buttonPanel.add(homeFolderButton);    newFolderButton = new JButton();    newFolderButton.setIcon(newFolderIcon);    buttonPanel.add(newFolderButton);    ButtonGroup toggles = new ButtonGroup();    JToggleButton listViewButton = new JToggleButton();    listViewButton.setIcon(listViewIcon);    toggles.add(listViewButton);    buttonPanel.add(listViewButton);    JToggleButton detailsViewButton = new JToggleButton();    detailsViewButton.setIcon(detailsViewIcon);    toggles.add(detailsViewButton);    buttonPanel.add(detailsViewButton);    JPanel topPanel = new JPanel();    parentsPanel.add(buttonPanel);    topPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 0, 0));    topPanel.add(parentsPanel);    accessoryPanel = new JPanel();    if (filechooser.getAccessory() != null)      accessoryPanel.add(filechooser.getAccessory(), BorderLayout.CENTER);    filelist = new JList(model);    filelist.setVisibleRowCount(6);    JScrollPane scrollp = new JScrollPane(filelist);    scrollp.setPreferredSize(new Dimension(400, 175));    filelist.setBackground(Color.WHITE);    filelist.setLayoutOrientation(JList.VERTICAL_WRAP);    filelist.setCellRenderer(new ListLabelRenderer());    GridBagConstraints c = new GridBagConstraints();    c.gridx = 0;    c.gridy = 0;    c.fill = GridBagConstraints.BOTH;    c.weightx = 1;    c.weighty = 1;    JPanel centrePanel = new JPanel();    centrePanel.setLayout(new GridBagLayout());    centrePanel.add(scrollp, c);    c.gridx = 1;    centrePanel.add(accessoryPanel, c);    JLabel fileNameLabel = new JLabel("File Name:");    JLabel fileTypesLabel = new JLabel("Files of Type:");    entry = new JTextField();    filters = new JComboBox();    filterEntries();    fileNameLabel.setLabelFor(entry);    fileNameLabel.setHorizontalTextPosition(SwingConstants.LEFT);    fileTypesLabel.setLabelFor(filters);    fileTypesLabel.setHorizontalTextPosition(SwingConstants.LEFT);    closePanel = new JPanel();    accept = getApproveButton(filechooser);    cancel = new JButton(cancelButtonText);    cancel.setMnemonic(cancelButtonMnemonic);    cancel.setToolTipText(cancelButtonToolTipText);    closePanel.add(accept);    closePanel.add(cancel);    c.anchor = GridBagConstraints.WEST;    c.weighty = 0;    c.weightx = 0;    c.gridx = 0;    bottomPanel = new JPanel();    bottomPanel.setLayout(new GridBagLayout());    bottomPanel.add(fileNameLabel, c);    c.gridy = 1;    bottomPanel.add(fileTypesLabel, c);    c.gridx = 1;    c.gridy = 0;    c.weightx = 1;    c.weighty = 1;    bottomPanel.add(entry, c);    c.gridy = 1;    bottomPanel.add(filters, c);    c.fill = GridBagConstraints.NONE;    c.gridy = 2;    c.anchor = GridBagConstraints.EAST;    bottomPanel.add(closePanel, c);    filechooser.setLayout(new BorderLayout());    filechooser.add(topPanel, BorderLayout.NORTH);    filechooser.add(centrePanel, BorderLayout.CENTER);    filechooser.add(bottomPanel, BorderLayout.SOUTH);  }  /**   * Uninstalls the components from the file chooser.   *   * @param fc  the file chooser.   */  public void uninstallComponents(JFileChooser fc)  {    parents = null;    accept = null;    cancel = null;    upFolderButton = null;    homeFolderButton = null;    newFolderButton = null;    filelist = null;  }  /**   * Installs the listeners required by this UI delegate.   *   * @param fc  the file chooser.   */  protected void installListeners(JFileChooser fc)  {    propertyChangeListener = createPropertyChangeListener(filechooser);    filechooser.addPropertyChangeListener(propertyChangeListener);    //parents.addItemListener(createBoxListener());    accept.addActionListener(getApproveSelectionAction());    cancel.addActionListener(getCancelSelectionAction());    upFolderButton.addActionListener(getChangeToParentDirectoryAction());    homeFolderButton.addActionListener(getGoHomeAction());    newFolderButton.addActionListener(getNewFolderAction());    filters.addItemListener(createFilterListener());    filelist.addMouseListener(createDoubleClickListener(filechooser, filelist));    filelist.addListSelectionListener(createListSelectionListener(filechooser));  }  /**   * Uninstalls the listeners previously installed by this UI delegate.   *   * @param fc  the file chooser.   */  protected void uninstallListeners(JFileChooser fc)  {    filechooser.removePropertyChangeListener(propertyChangeListener);    propertyChangeListener = null;  }  /**   * Installs the defaults for this UI delegate.   *   * @param fc  the file chooser.   */  protected void installDefaults(JFileChooser fc)  {    installIcons(fc);    installStrings(fc);  }  /**   * Uninstalls the defaults previously added by this UI delegate.   *   * @param fc  the file chooser.   */  protected void uninstallDefaults(JFileChooser fc)  {    uninstallStrings(fc);    uninstallIcons(fc);  }  /**   * Installs the icons for this UI delegate (NOT YET IMPLEMENTED).   *   * @param fc  the file chooser.   */  protected void installIcons(JFileChooser fc)  {    // FIXME: Implement.  }  /**   * Uninstalls the icons previously added by this UI delegate (NOT YET   * IMPLEMENTED).   *   * @param fc  the file chooser.   */  protected void uninstallIcons(JFileChooser fc)  {    // FIXME: Implement.  }  /**   * Installs the strings used by this UI delegate.   *   * @param fc  the file chooser.   */  protected void installStrings(JFileChooser fc)  {    acceptAllFileFilterText = UIManager.getString("FileChooser.acceptAllFileFilterText");    cancelButtonMnemonic = UIManager.getInt("FileChooser.cancelButtonMnemonic");    cancelButtonText = UIManager.getString("FileChooser.cancelButtonText");    cancelButtonToolTipText = UIManager.getString("FileChooser.cancelButtonToolTipText");    dirDescText = UIManager.getString("FileChooser.directoryDescriptionText");    fileDescText = UIManager.getString("FileChooser.fileDescriptionText");    helpButtonMnemonic = UIManager.getInt("FileChooser.helpButtonMnemonic");    helpButtonText = UIManager.getString("FileChooser.helpButtonText");    helpButtonToolTipText = UIManager.getString("FileChooser.helpButtonToolTipText");    openButtonMnemonic = UIManager.getInt("FileChooser.openButtonMnemonic");    openButtonText = UIManager.getString("FileChooser.openButtonText");    openButtonToolTipText = UIManager.getString("FileChooser.openButtonToolTipText");    saveButtonMnemonic = UIManager.getInt("FileChooser.saveButtonMnemonic");    saveButtonText = UIManager.getString("FileChooser.saveButtonText");    saveButtonToolTipText = UIManager.getString("FileChooser.saveButtonToolTipText");  }  /**   * Uninstalls the strings previously added by this UI delegate.   *   * @param fc  the file chooser.   */  protected void uninstallStrings(JFileChooser fc)  {    acceptAllFileFilterText = null;    cancelButtonMnemonic = 0;    cancelButtonText = null;    cancelButtonToolTipText = null;    dirDescText = null;    fileDescText = null;    helpButtonMnemonic = 0;    helpButtonText = null;    helpButtonToolTipText = null;    openButtonMnemonic = 0;    openButtonText = null;    openButtonToolTipText = null;    saveButtonMnemonic = 0;    saveButtonText = null;    saveButtonToolTipText = null;  }  /**   * Creates a new directory model.   */  protected void createModel()  {    model = new BasicDirectoryModel(filechooser);  }  /**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -