Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208

Не работает фильтр в FileChooser

18.05.2013, 23:36. Показов 1732. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите настроить фильтр.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
private class MyFilter extends FileFilter {
 
        @Override
        public boolean accept(File file) {
            if (file.isDirectory()) {
                return true;
            }
            String extension = null;
            String fileName = file.getName();
            int i = fileName.lastIndexOf('.');
            if (i > 0 && i < file.getName().length() - 1) {
                extension = file.getName().substring(i + 1).toLowerCase();
            }
            if (extension == "txt") {
                return true;
            } else {
                return false;
            }
        }
 
        @Override
        public String getDescription() {
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }
 
    private void ExportButActionPerformed(ActionEvent ae) {
        int result = fileSave.showSaveDialog(frame);
        MyFilter filter = new MyFilter();
        fileSave.addChoosableFileFilter(filter);
        fileSave.setVisible(true);
        try {
            if (result == JFileChooser.APPROVE_OPTION) {
                FileOutputStream fos = new FileOutputStream(fileSave.getSelectedFile().getAbsolutePath());
                OutputStreamWriter osw = new OutputStreamWriter(fos);
                osw.write(editorPane.getText());
                osw.flush();
                osw.close();
            }
        } catch (IOException ex) {
            Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
Добавлено через 52 минуты
нужно было задать описание фильтра в абстрактном методе:
Java
1
2
3
4
@Override
        public String getDescription() {
            return "Just My Filter";
        }
Но возникла еще одна проблема. Фильтр появляется в FileChooser только после второго вызова этого FileChooser. При первом вызове стоит только "All Files". В чем может быть проблема?

Добавлено через 12 минут
Ситуация снова прояснилась. Методу void accept моего фильтра нужно передать объект типа File. А он появляется только после вызова FileChooser и при втором вызове все нормально. Но как решить эту проблему я не понимаю. Может есть у кого пример или киньте ссылку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2013, 23:36
Ответы с готовыми решениями:

FileChooser
Всем добрый день, хочу выбирать директорию для сохранения через FileChooser и там метод есть showSaveDialog(...), проблема в том, что если...

FileChooser
Если в FileChooser пользователь выбирает &quot;Мой компьютер&quot; , FileChooser возвращает null и ошибку File selectDir = null; ...

FileChooser
Приветствую всех, помогите пожалуйста с возникшей трудностью. Ситуация такая создаю виджет FileChooserListView и хочу получить информацию о...

13
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
19.05.2013, 01:09
Цитата Сообщение от animator404 Посмотреть сообщение
extension == "txt"
Java
1
extension.toLowerCase().equals("txt")
вы вроде пишете какую то программу, но базовые вещи изучить в яве не озаботились, думаете прога после такого подхода взлетит?

и чем вам кстати FileNameExtensionFilter не угодил?
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
19.05.2013, 01:13  [ТС]
думаю это лучший способ изучить язык: написать какую-то программу.

Добавлено через 2 минуты
все равно не работает с первого раза
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
private class MyFilter extends FileFilter{
 
        @Override
        public boolean accept(File file) {
            if(file.isDirectory()){
                return true;
            }
            if (file.getName().endsWith(".txt")) {
                    return true;
                }
            return false;
        }
 
        @Override
        public String getDescription() {
            return "Text files only";
        }
    
}
    private void ExportButActionPerformed(ActionEvent ae) {
        int result = fileSave.showSaveDialog(frame);
        MyFilter filter = new MyFilter();
        fileSave.setVisible(true);
        fileSave.setFileFilter(filter);
        try {
            if (result == JFileChooser.APPROVE_OPTION) {
                FileOutputStream fos = new FileOutputStream(fileSave.getSelectedFile().getAbsolutePath());
                OutputStreamWriter osw = new OutputStreamWriter(fos);
                osw.write(editorPane.getText());
                osw.flush();
                osw.close();
            }
        } catch (IOException ex) {
            Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
19.05.2013, 01:17
используйте готовый, зачем городить велосипеды http://docs.oracle.com/javase/... ilter.html
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
19.05.2013, 01:24  [ТС]
Спасибо, но хотелось просто разобраться как это все работает. Проблема была вот в чем:
эта строчка
Java
1
int result = fileSave.showSaveDialog(frame);
должна была быть написана после этой
Java
1
fileSave.setFileFilter(filter);
Добавлено через 1 минуту
Цитата Сообщение от mutagen Посмотреть сообщение
используйте готовый, зачем городить велосипеды
даже если бы я использовал готовый велосипед, у меня получилась та же ошибка
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
19.05.2013, 01:41
Цитата Сообщение от animator404 Посмотреть сообщение
даже если бы я использовал готовый велосипед, у меня получилась та же ошибка
looks like try to make surgery never seen scalpel before
1
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
19.05.2013, 01:50  [ТС]
mutagen,
Цитата Сообщение от animator404 Посмотреть сообщение
extension == "txt"
Ну да, согласен. Тут я затупил. Но я сам увидел ошибку раньше чем вы ответили. И все же, мне кажется лучше писать программу и параллельно учить язык, чем читать книгу о языке и не воспринимать ее. Это скучно. Но пару книг я все-таки прочел и скальпель(хоть какой-то),думаю, у меня есть.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
19.05.2013, 03:10
Цитата Сообщение от animator404 Посмотреть сообщение
Это скучно.
не прочитав книгу о архитектуре стандартной библиотеки, принципов разработки и иерархии наследования
невозможно написать программу так чтобы она хорошо работала
вот сейчас вы зяняты свингом, рекомендую почитать Портянкина "Swing Эффективные пользовательские интерфейсы"
прежде чем бросаться писать.
Большинство из вопросов что вы задаёте - отпадут сами собой.

ps: можно читать по главам и пробовать применить на маленьком приложении чтобы разобраться, прежде чем проектировать большое - не зная что и как должно работать

принцип учусь пока пишу - хорошо работает только для маленьких проектов (ито я в этом не уверен), лучше всего копаться в коде стандартной библиотеки и стараться разобраться уже после книг
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
19.05.2013, 03:12  [ТС]
mutagen, это одна из книг, которые я прочел
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
20.05.2013, 12:31
Цитата Сообщение от mutagen Посмотреть сообщение
не прочитав книгу о архитектуре стандартной библиотеки, принципов разработки и иерархии наследования, невозможно написать программу так чтобы она хорошо работала
Чтобы хорошо работала - да. Но чтобы вообще что-то понять, иногда полезно сначала что-то написать с минимумом документации - только с API. Пару недель. Когда глупые вопросы решатся, а умные останутся - вот тогда стоит читать книгу. Она будет читаться как хороший детектив, давая ответы на умные вопросы.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
20.05.2013, 12:35
Цитата Сообщение от Skipy Посмотреть сообщение
Но чтобы вообще что-то понять, иногда полезно сначала что-то написать с минимумом документации - только с API.
считаю что это невозможно, со своей уже подготовленной колокольни тебе кажется что просто читай API и вуаля,
но начинающий не знает куда тыкаться в этом API, сам по себе он сделан довольно неудачно, так как для свежего жависта
он воспринимается как куча разрозненных и непонятных доков.

вот маленький недавний пример:
человеку нужны были атрибуты файла Как получить информацию о файле
я уже зная 6ку потратил больше часа чтобы раскопать что там появилось нового в 7ке и найти новые классы которые
реализуют нужный функционал.
И это я ещё знал что в старых классах искать не надо, а что делать новичку когда для него это всё сплошная куча непоняток?
да что далеко ходить взять хотябы paint и paintComponent - это же грабли №2 после == и equals
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
20.05.2013, 12:46
Цитата Сообщение от mutagen Посмотреть сообщение
считаю что это невозможно, со своей уже подготовленной колокольни тебе кажется что просто читай API и вуаля, но начинающий не знает куда тыкаться в этом API, сам по себе он сделан довольно неудачно, так как для свежего жависта он воспринимается как куча разрозненных и непонятных доков.
Моя подготовленная колокольня выросла не на пустом месте. Когда я начинал, API в его текущем виде не было. Была документация по API в виде PostScript-файлов, которую надо было печатать (!!!). tutorial-а не было. Форумов не было. Книг не было. НИЧЕГО не было кроме этого самого напечатанного API и чего-то базового по синтаксису и основам. Это был январь 1996 года, и опыт программирования у меня тогда был мизерный.

И я учился именно так, как рассказываю. Читал API, искал там, что можно создать в качестве главного класса, создавал. Искал, как добавлять компоненты, как раскладывать. Как работать с потоками. И т.д. и т.п. Когда появилась первая книга - она реально читалась как детективный роман. Я к тому времени написал на Java треть диплома. И вот вторая треть получилась уже принципиально иного качества. А когда через год появился API в его сегодняшнем виде - читать его было наслаждением. Совершенно понятно, удобно, связно.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
20.05.2013, 12:53
Цитата Сообщение от Skipy Посмотреть сообщение
Совершенно понятно, удобно, связно.
это потому что ты не сравнивал с доками от С#, вот где действительно потрудились на славу и читать их гораздо понятнее
к примеру гуголь с андроидом и его апи тоже взял от msdn много хорошего, всякие там гетинг стартед и тд
но ява с её документацией до сих пор как в 99 году, сподобились только раскрасить слегка и всё
нет никакой структуризации по задачам гуй, ее, мультимедия, хмл, всё в одну кучу
поди попробуй разберись с нуля
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
20.05.2013, 13:15  [ТС]
Посмотрим, что получится с моего обучения. Нельзя сказать, что я абсолютный новичок в программировании. Я начинал с Паскаля, Делфи и когда-то даже начинал учить Java. Поэтому некоторые принципы ООП понимаю. Нужно лишь закрепить ту основу, которая у меня есть и наращивать на ней знания. Считаю, что практические умения лучше помогают усвоить материла. Читая просто книгу невозможно споткнуться об грабли и запомнить как делать можно и как нет. Без книг и документации безусловно некуда, но это должно быть вспомогательным инструментом. Нужно все время спотыкаться иначе никак.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2013, 13:15
Помогаю со студенческими работами здесь

Как работать с FileChooser под Linux
что-то есть аналогичное FileChooser fileChooser = new FileChooser() при работе на Linux по протоколу Samba ?

После выбора файла в FileChooser, на экране ничего нет
у меня к вам вопрос такой. вот прорисовываю я фрейм, все нормально, да вот только после выбора файла в FileChooser, на экране ничего нет,...

Срочно нужны библиотеки avax.swing.filechooser.FileNameExtensionFilter. для javajbuilder2008
Срочно нужны библиотеки avax.swing.filechooser.FileNameExtensionFilter. для javajbuilder2008 Помогите пожалуйста найти очень надо, ну...

Фильтр не работает
procedure TForm1.ComboBox2Change(Sender: TObject); var selected:String; begin selected:=ComboBox2.SelText; ...

Не работает фильтр
1. Я совсем не умею программировать. 2. По урокам из Ютуба я смог организовать привязку БД из Access с C++ builder. На форме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru