Технологии программирования
Задачи
Файлы и исключения
-
Создайте функцию
void fun(int x) throws Exception
, которая бросает исключение для четных аргументов, и ничего не делает для нечетных аргументов. В методеmain
вызовите эту функцию с аргументами от 1 до 10 и для каждого аргумента выведите в консоль, возникло исключение или нет. Никакого другого текста, включая информацию о возникших исключениях, в консоль выводить не нужно. -
Создайте метод
int readInt(String message)
, который выводит на экран сообщение message и ждет, когда пользователь введет число. Если пользователь ввел не число, ему отображается сообщение “это не число, попробуйте еще раз”, и снова предлагается ввести число. И так до тех пор, пока не будет введено число. Используйте методInteger.parseInt()
, и ловите исключение, которое он бросает, если не смог преобразовать строку в число. -
Дан список имен файлов. Предполагается, что эти файлы лежат в одном заранее выбранном вами каталоге. Нужно переименовать каждый файл так, чтобы в начало к нему был приписан номер файла в списке. Например, если был список
a.txt
,b.txt
, то нунжо переименовать файлы в1 a.txt
и2 b.txt
. Для каждого файла выведите, удалось ли его переименовать, а если нет, то что именно пошло не так. Проследите, чтобы не выводилось лишней информации об ошибках наподобие содержимого стека. Используйте метод Files.move(). -
Чтение и запись файлов в разных кодировках
- Заведите в программе переменную
text
и присвойте ей какой-нибудь русский текст длиной в одно предложение. - Запишите текст в файлы text_utf8.txt, text_win1251.txt, text_koi8r.txt в соответствующих кодировках.
- Прочитать каждый файл побайтово (
Files.readAllBytes()
) и вывести байты в файлы, соответственно, text_utf8.bin и т.п. Байты выводятся текстом через пробел, т.е., например,128 210 30
. На сайте hexed.it вы можете проверить содержимое файлов и сравнить с тем, что получилось у вас. - Для файла в кодировке koi8r сделать следующее. Прочитать все его байты. Если какой-то байт < 0, то добавить к его значению 128. Записать полученные байты в новый файл text_koi7r.txt. Записывайте байты в виде байт, а не в виде текста, как требовала прошлая задача. Откройте полученный файл в текстовом редакторе (можно через IDEA) и посмотрите, что получилось.
- Заведите в программе переменную
JavaFX
- Создайте интерфейс мессенджера, который мы обсудили на паре.
- Добавьте в список контактов несколько человек, научите кнопку посылать сообщение в историю сообщений, запретите изменения в истории сообщений
-
Реализуйте программу, которая показывает на экране круг и дает возможность изменять его размер, цвет и т.п. Окно приложения разделено на две части, в левой части находятся элементы управления для выбора цветов и размеров круга, в правой части находится круг. Нужны следующие элементы управления: Slider для выбора радиуса круга, два ColorPicker для выбора цвета круга и цвета фона. Добавьте заодно метки с текстом, чтобы было понятно, где радиус, где цвет фона, где цвет круга.
-
Начните с создания левой части интерфейса, добавьте на левую панель все элементы интерфейса.
- Наполните правую часть интерфейса, она должна состоять из панели Pane, которая будет являться фоном и, соответственно, раскрашиваться и отвечать за цвет фона. На панели должен лежать Circle. Это такой узел (Node), который изображается в виде круга указанного радиуса.
- Свяжите цвет из первого ColorPicker c цветом круга.
- Свяжите значение из Slider с радиусом круга.
- Свяжите цвет из второго ColorPicker c цветом фона.
- Свяжите координаты x и y круга с половиной, соответственно, ширины и высоты правой панели. Тем самым круг расположится ровно по центру панели.
- Свяжите максимальное значение слайдера выбора радиуса с максимально возможным радиусом круга, при котором круг все еще помещается на панель.
-
- Просмотр изображений.
- Создайте интерфейс программы просмотра изображений из каталога. Интерфейс состоит из:
- SplitPane, который занимает всё пространство и вертикально разделяет окно на две части
- ListView
для предпросмотра всех изображений. Он и занимает всю левую панель SplitPane. - Выбор каталога для просмотра. Это кнопка «Выбрать» справа сверху на правой панели SplitPane. И TextField с выбранным путем к каталогу. Он занимает все пространство слева от кнопки до ListView.
- Всё оставшееся пространство на правой панели SplitPane занимает панель Pane с лежащей на ней ImageView. Она используется для просмотра полного изображения.
- Для начала выберите какой-то фиксированный каталог с изображениями, напишите код, который находит все файлы в этом каталоге и добавляет их в список ObservableList
. Считайте пока, что все файлы в этом каталоге являются изображениями. В следующих пунктах нужно будет обрабатывать ошибки, и тогда потребуется исключить из списка все файлы, которые не удалось загрузить как изображения. - Сделайте так, что при выборе изображения в списке, оно бы отображалось в ImageView. Для того, чтобы иметь доступ к выбранным элементам списка, нужно обратиться к
myListView.getSelectionModel()
. В этой Модели есть информация о выбранном элементе (файле), его индексе (номеру в списке), при этом выбранный элемент и его индекс — это свойства, поэтому вы можете следить за их изменениями и, при необходимотсти, связывать их с другими свойствами. - Сделайте так, что ListView при отображении элемента показывает картинку и имя файла. Используйте
CellFactory
и методsetGraphics(new ImageView(...))
у вашего анонимного класса, наследникаListCell
. А при загрузке картинки с диска, укажите, что вы хотите загрузить уменьшенную версию изображения, для этого можно при загрузке указать в качестве дополнительных аргументов размеры уменьшенной копии, например, 64 на 64. - Сделайте так, что каталог можно выбирать. Используйте класс
Directory Chooser
. Это должен быть один DirectoryChooser на всю программу, созадйте его один раз при запуске программы, тогда он будет запоминать, какой каталог открывал в прошлый раз. - Сделайте так, что если в данный момент в списке нет ни одного изображения, список пишет «нет изображений».
- Сделайте так, что если не выбрано ни одного изображения, в просмотрете изображения написано “выберите изображение”.
- Сделайте так, чтобы программа не ломалась при невозможности загрузить картинку, а как-то сообщала об этом пользователю или просто не отображала в списке картинку, которую невозможно загрузить.
- Создайте интерфейс программы просмотра изображений из каталога. Интерфейс состоит из: