Java: GUI приложение для работы с текстовыми файлами

Привет, читатель :)

Дали вот такое задание, для написание на Java и обязательно в среде NetBeans:

Написать программу, которая должна уметь:

  1. Открывать каталог, типа С:\users\
  2. Выводить из каталога в Combobox файлы
  3. По нажатию кнопки «открыть» открывать в редактор текстовый файл из каталога
  4. При изменении файла и нажатии на кнопку «сохранить» сохранять изменения в том же файле который был открыт

Можно сказать, что я начал и закончил интерфейсом. А ну и еще одно — эта инструкция не будет такой подробной как некотрые ранее, так как мне кажется что тут все примитивно.

Главное окно

Главное окно

Кнока Open Dir открывает стандартный диалог открытия файла. В моем случае папок. Единственный combobox содержит название файлов в папке (только в текущей — без поддиректорий). Open for Edit открывает файл и считывает текст в TextArea, ну а save записывает обратно в файл.

Код и обработчики.

Я не очень хорошо знаю, как пишуются java-приложения в окнах (это первое было), поэтому я сразу искал примеры и делал по ним, вытаскивая подходящие кусочки кода.

Обработчик для кнопки «Open Dir» такой:

Мне нужен был диалог открытия папки, но java предоставляет единый (как я понял позднее) для файлов и папок. Настраивается режимами. Спасибо ребятам со stackoverflow.com. Далее нужно получить путь до выбраной папки. Снова stackoverflow помог. Далее нужно было забить имена файлов в Combobox. Как это сделать написано здесь, но тут написан целый метод, для рекурсивного обхода папок — упрощаем. Отлично, теперь у меня открывается директория и те файлы, которые там есть прописываются в комбобокс.

Дальше нужно научить открывать ТЕКСТОВЫЕ файлы. ОК, нужен способ получить расширение файла. Ответ снова тут. Я взал способ по-сложнее, вдруг кто захочет запустить программку на *nix системе? В итоге получился вот такой вот метод:

Теперь открытие файла: (как его открывать и считывать в TextArea здесь, ну и записывать обратно там же)

Запись:

Про то, как создавать диалоги написано тут.

Получился вот такой проект. файлы:

Спасибо, что дочитали до конца. Как всегда буду рад ответить на любые ваши вопросы.

Добавить комментарий