Как выбрать предыдущее или следующее изображение в каталоге? - PullRequest
0 голосов
/ 28 ноября 2011

Итак, я создал простую программу для просмотра изображений с JFileChooser, в которой я загружаю изображение в значок метки.Я также сохраняю местоположение каталога.У меня в главном приложении две кнопки, предыдущая и следующая, как сделать так, чтобы при нажатии на них они загружали либо предыдущее, либо следующее изображение из одного и того же каталога?Я предполагаю, что это была бы какая-то форма поиска по регулярному выражению плюс или минус целое число, но я не уверен, как это выглядело бы, я не так хорош в регулярных выражениях.

Я, вероятно, должен добавить, что у меня естьметод draw (изображение BufferedImage), который принимает отправленный ему BufferedImage и рисует его на JLabel, и метод loadImage (файл файла), который загружает любое изображение, отправленное ему.Поэтому я загружаю файл, а затем рисую его.

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Вы можете использовать dir.listFiles( aFileFilter ) для вывода списка всех файлов в каталоге.Напишите себе FileFilter (подходит анонимный), который подходит только для файлов требуемого типа (с расширением .jpg, .png, .bmp, .gif).

Пример:

File[] images = dir.listFiles( new FileFilter() {
    @Override
    public boolean accept( File pathname ) {
        String name = pathname.getName();
        return name.endsWith( ".png" ) || name.endsWith( ".jpg" );
    }
} );

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

1 голос
/ 28 ноября 2011

Я также сохраняю расположение каталога

Затем вы можете использовать File.listFiles (...), чтобы получить массив всех файлов в каталоге. Возможно, вы захотите отфильтровать это, чтобы получить только файлы изображений.

Тогда вы захотите отсортировать этот массив по имени файла.

Когда вам нужно следующее / предыдущее изображение, вы можете выполнить поиск по массиву, чтобы найти индекс текущего видимого изображения, а затем сложите / вычтите 1, чтобы получить следующее изображение для отображения.

Edit:

См .: Фильтрация списка файлов

...