Отключение кнопки «Новая папка» в окне выбора файлов не работает должным образом - PullRequest
2 голосов
/ 06 апреля 2011

Я отключаю кнопку новой папки, используя следующий код:

 public void disableNewFolderButton( Container c ) {

     System.out.print("in disable fn");
int len = c.getComponentCount();
for (int i = 0; i < len; i++) {
  Component comp = c.getComponent(i);
  if (comp instanceof JButton) {
    JButton b = (JButton)comp;
    Icon icon = b.getIcon();
    if (icon != null
         && icon == UIManager.getIcon("FileChooser.newFolderIcon"))
    {
        System.out.print("in disable fn");
       b.setEnabled(false);
    }
    }
  else if (comp instanceof Container) {
    disableNewFolderButton((Container)comp);
  }
}
 }

Код вызывается в следующих строках:

   JFileChooser of=new JFileChooser();
    of.setAcceptAllFileFilterUsed(false);
    of.addChoosableFileFilter(new MyFilter());
    disableNewFolderButton(of);

Но кнопка новой папки отключена, только когда впервые отображается средство выбора файлов. Предположим, я иду на какой-нибудь диск, скажем, g:, тогда кнопка снова активируется. Как правильно это установить?

Ответы [ 3 ]

6 голосов
/ 06 апреля 2011

это работает для меня ...

    //Create a file chooser
UIManager.put("FileChooser.readOnly", Boolean.TRUE); 
JFileChooser fc = new JFileChooser();
4 голосов
/ 06 апреля 2011

Отключить действие «Новая папка» (которое, в свою очередь, отключит кнопку):

import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;

public class FileChooserAction
{
    public static void createAndShowUI()
    {
        JFileChooser chooser = new JFileChooser();

        BasicFileChooserUI ui = (BasicFileChooserUI)chooser.getUI();
        Action folder = ui.getNewFolderAction();
        folder.setEnabled(false);

        chooser.showSaveDialog(null);
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}
0 голосов
/ 06 апреля 2011

1) Это немного глупо, но вы можете отключить его в другом потоке.Пока средство выбора файлов не стало невидимым.
2) Работает ли скрытие кнопки?b.setVisible(false);

...