Исключить файл в диалоговом окне окна OSX

Я пытаюсь исключить файл типа из диалогового окна. Исключить файл в диалоговом окне окна OSX

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. Но я не нахожу никакого кода, чтобы установить возможность исключения файла типа при открытом окне. Единственное, что я обнаружил, это исключить файл после выбора папки, используя этот код ниже; но я не нахожу это решение очень хорошим! Моя цель - видеть прямо в окне, авторизован ли файл или нет.

FileDialog#setFilenameFilter? Если вам нужно что-то еще, вам, вероятно, придется взглянуть на решение на основе JNI/JNA.
MadProgrammer 31.03.2019 10:50

Это может быть легко использовано с Processing для младшего программиста?

Knupel 31.03.2019 14:19
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
73
1

Ответы 1

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

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:

Filename filters do not function in Sun's referenceimplementation for Microsoft Windows.

Ты волшебник, я думаю, это та же проблема, что и множественный выбор... порядок моих методов. Большое спасибо за это простое и волшебное решение.

Knupel 02.04.2019 13:45

Другие вопросы по теме