исключить файл в диалоговом окне OSX - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь исключить файл типа из диалогового окна.what i need in my window

void setup() {
  selectFolder("Select a folder to process:", "folderSelected");
}

void folderSelected(File selection) {
  if (selection == null) {
    println("Window was closed or the user hit cancel.");
  } else {
    println("User selected " + selection.getAbsolutePath());
    printArray(getFolderContent(selection));
  }
}

import java.io.FilenameFilter;
static final String[] exts = { ".gif", ".png", ".jpeg", ".jpg", ".tiff", ".tif"};

static final FilenameFilter pictsFilter = new FilenameFilter() {
  boolean accept(File dir, String name) {
    name = name.toLowerCase();
    for (int i = exts.length; i-- != 0;) {
        if (name.endsWith(exts[i]))  {
            return true;
        }
      }
    return false;
  }
};

static final File[] getFolderContent(File dir) {
  return dir.listFiles(pictsFilter);
}

Я не хочу использовать JChooser, потому что он очень уродливый и старый UI.Я пытаюсь с FileDialog, потому что окно, используемое для отображения файлов, соответствует дизайну OSX.Но я не нахожу код, чтобы установить возможность исключить тип файла, когда окно открыто.Единственное, что я нахожу, это исключаю файл после выбора папки, используя этот код ниже;но я не нахожу это решение очень хорошим!Моя цель - видеть в окне, авторизован файл или нет.

1 Ответ

1 голос
/ 01 апреля 2019

Чтобы использовать фильтр имен файлов, вам необходимо создать его и установить в диалоговом окне файла.

final String[] exts = { ".gif", ".png", ".jpeg", ".jpg", ".tiff", ".tif"};
FileDialog dialog = new FileDialog(frame, "select file", FileDialog.LOAD);
dialog.setFilenameFilter(new FilenameFilter() {

    @Override
    public boolean accept(File dir, String name) {
        name = name.toLowerCase();
        for (int i = 0; i <  exts.length; i++) {
            if (name.endsWith(exts[i]))  {
                return true;
            }
          }
        return false;
    }}
);

Обратите внимание, что в соответствии с Javadoc:

Фильтры имен файлов не работают в справочной реализации Sun для Microsoft Windows.

...