Главная страница

Презентация по Программированию. Книга Программирование на Java для начинающих


Скачать 4.47 Mb.
НазваниеКнига Программирование на Java для начинающих
АнкорПрезентация по Программированию
Дата03.02.2022
Размер4.47 Mb.
Формат файлаpdf
Имя файла638767.pdf
ТипКнига
#350143
страница13 из 18
1   ...   10   11   12   13   14   15   16   17   18
list.add( "Альфа" ) ;
list.add( "Дельта" ) ; list.add( "Чарли" ) ; System.out.
println( "Список: " + list ) ;
5. Теперь идентифицируйте текущее значение, хранящееся во втором элементе, а затем замените его новым строковым значением.
System.out.println( "Заменяем: " + list.get(1) + "\n" ) ;
list.set( 1, "Браво" ) ;
6. Наконец, сделайте обход списка и выведите строковое значение, хранящееся в каждом элементе.
list.forEach( ( x ) -> System.out.println( "Элемент: " + x )
) ;
7. Сохраните программу под именем Lists.java, затем скомпили- руйте и запустите.
JAVA
Lists.java
На заметку
Так же, как и обычные мас- сивы, элементы списочного массива нумеруются, начи- ная с нуля.
Совет
Графический компонент
JComboBox, представленный в следующей главе, содер- жит раскрывающийся список вариантов и при его созда- нии нужно также указывать тип данных.

7. Импор
тирование ф
ункций
130
Работа с датой
Пакет java.time содержит класс с именем LocalDateTime, в котором есть полезные методы для извлечения определенных полей, описы- вающих конкретные метки времени. Для работы с этим классом нуж- но либо импортировать конкретно его командой import java.time.
LocalDateTime;
, либо импортировать все классы данного пакета, ис- пользуя шаблон import java.time.* ;.
При помощи метода now() можно создать новый объект LocalDateTime, содержащий поля, описывающие текущее значение даты и времени.
Данные поля инициализируются текущим значением локального си- стемного времени.
Значения отдельных полей объекта LocalDateTime можно получить, используя соответствующие методы. Например, метод getYear() вы- зывает значение поля «Год». Точно так же значения всех полей можно и изменять, применяя соответствующие методы объекта LocalDateTime и указывая значение для установки. Например, новое значение года можно задать, указав его в качестве аргумента методу withYear().
1. Создайте новую программу, импортирующую все методы класса
java.time.LocalDateTime
import java.time.LocalDateTime ;
2. Добавьте класс с именем DateTime, содержащий стандартный ме- тод main.
class
DateTime
{
public static void main ( String [] args ) { }
}
3. Внутри фигурных скобок главного метода добавьте оператор для создания объекта LocalDateTime, который будет содержать теку- щее значение времени.
LocalDateTime date = LocalDateTime.now() ;
Новинка
Пакет java.time был пред- ставлен в версии Java 8, для того чтобы облегчить работу с датой и временем.
JAVA
DateTime.java

131
4. Выведите текущее значение даты и времени.
System.out.println( "\nСейчас " + date ) ;
5. Увеличьте значение года и выведите измененное значение текущего времени.
date = date.withYear( 2018 ) ;
System.out.println( "\nТеперь текущее время " + date ) ;
6. Выведите отдельные поля объекта LocalDateTime.
String fields = "\nГод:\t\t\t" + date.getYear() ;
fields += "\nМесяц:\t\t\t" + date.getMonth() ;
fields += "\nНомер месяца:\t\t" + date.getMonthValue() ;
fields += "\nДень недели:\t\t" + date.getDayOfWeek() ;
fields += "\nДень месяца:\t\t" + date.getDayOfMonth() ;
fields += "\nДень в году:\t\t" + date.getDayOfYear();
fields += "\nЧас (0-23):\t\t" + date.getHour() ;
fields += "\nМинута:\t\t\t" + date.getMinute() ;
fields += "\nСекунда:\t\t" + date.getSecond() ;
System.out.println( fields ) ;
7. Сохраните программу под именем DateTime.java, затем скомпили- руйте и запустите.
Совет
Использование конкатена- ции строк в данном приме- ре является эффективным способом для вывода, по- скольку функция println() вызывается только один раз, вместо того чтобы вызывать ее много раз для вывода каждого отдельного поля.
На заметку
Вместо LocalDateTime вы можете использовать класс
ZonedDateTime, если вам требуется поле временной зоны.

7. Импор
тирование ф
ункций
132
Форматирование чисел
В Java содержится пакет с именем java.text, который предлагает по- лезные классы для форматирования чисел, в том числе значений валют.
Пакет можно сделать доступным в любой программе, включив в начало файла .java оператор import. Это можно сделать, используя шаблон *, включающий все классы пакета: import java.text.* ;, либо указывая определенный класс по имени.
В пакете java.text содержится класс с именем NumberFormat, который содержит методы, используемые для форматирования числовых зна- чений при выводе: добавление разделителей, символов валют, а также знаков процента.
При создании объекта NumberFormat определяется тип его формати- рования — метод getNumberInstance() для разделителей, getCurren-
cyInstance()
— для символов валюты и getPercentInstance() — для знаков процента. Форматирование применяется указанием числового значения, которое нужно отформатировать, в качестве аргумента мето- ду format() объекта NumberFormat.
Для форматирования объектов, содержащих дату и время, использует- ся пакет java.time.format, в котором имеется класс DateTimeFormat.
Объект DateTimeFormatter содержит шаблон форматирования, кото- рый указывается в качестве строкового аргумента методу ofPattern().
Шаблон форматирования включает буквы, определенные в документа- ции, а также символы для разделителей, которые выбираете вы сами.
Например, шаблон M/d/y определяет месяц, день и год, разделенные слешем. Формат применяется указанием шаблона форматирования в качестве аргумента методу format() объекта java.time.
1. Создайте новую программу, импортирующую функциональность всех методов класса NumberFormat пакета java.text, а также всех методов класса DateTimeFormatter пакета java.time.format.
import java.text.NumberFormat ;
import java.time.format.DateTimeFormatter ;
2. Добавьте класс с именем Formats, содержащий стандартный метод
main
class
Formats
{
public static void main ( String [] args )
{
}
}
Новинка
Пакет java.time.format был введен в версии Java 8 для упрощения представления значения даты.
JAVA
Formats.java

133
3. Внутри фигурных скобок главного метода добавьте операторы для вывода числа с разделителями групп.
NumberFormat nf = NumberFormat.getNumberInstance() ;
System.out.println( "\nЧисло: " + nf.format(123456789) ) ;
4. Добавьте выражения для вывода числа с символом валюты.
NumberFormat cf = NumberFormat.getCurrencyInstance() ;
System.out.println( "\nВалюта: " + cf.format(1234.50f) ) ;
5. Добавьте выражения для вывода числа со знаком процента.
NumberFormat pf = NumberFormat.getPercentInstance()
System.out.println( "\nПроцент: " + pf.format( 0.75f ) ) ;
6. Добавьте оператор, создающий объект LocalDateTime, содержащий значение текущего времени.
java.time.LocalDateTime now =
java.time.LocalDateTime.now()
;
7. Добавьте операторы для вывода форматированного значения даты.
DateTimeFormatter df =
DateTimeFormatter.ofPattern( "MMM d, yyy" ) ;
System.out.println( "\nДата: " + now.format( df ) ) ;
8. Добавьте операторы для вывода форматированного значения вре- мени.
DateTimeFormatter tf =
DateTimeFormatter.ofPattern( "h:m a" ) ;
System.out.println( "\nВремя: " + now.format( tf ) ) ;
9. Сохраните программу под именем Formats.java, затем скомпили- руйте и запустите.
Совет
Операторы могут обращать- ся к классу, который не был импортирован, если указать полный путь к пакету, как показано здесь, в опера- торе, создающем объект
LocalDateTime.
Внимание
Буквы, используемые в шаблонах, чувствительны к регистру — для подробно- го описания используемых шаблонов обратитесь к доку- ментации.

7. Импор
тирование ф
ункций
134
Заключение

Для того чтобы в программе использовать функциональность дру- гих классов, применяется оператор import, который ставится в на- чале программы.
• Оператор
import
может импортировать как отдельные классы, определенные по имени, так и классы пакета при помощи символа шаблона *.

Для обработки процедур ввода и вывода существует пакет java.io.
• Объект
File
можно использовать для доступа к файлам и ката логам.
• Объект
InputStreamReader
декодирует введенные байты в симво- лы, а объект BufferedReader читает эти декодированные символы.

Для декодирования байтов текстового файла в символы использу- ется объект FileReader.
• Объекты
FileWriter
и BufferedWriter можно использовать для создания и изменения текстового файлов.
• Пакет
java.util
содержит утилиты для обработки наборов дан- ных, подобных массивам класса Arrays.
• В пакете
java.util
содержится также класс ArrayList, у которого есть методы для обработки элементов последовательностей.
• Объект
ArrayList
— это набор, который должен указывать тип элемента, содержащегося в списке, например .

Лямбда-выражение — это анонимный метод, который определяет- ся сразу же на месте выполнения.
• Пакет
java.time
содержит класс LocalDateTime, представляющий поля для компонентов даты и времени.
• Пакет
java.text
содержит класс NumberFormat, который использу- ется для форматирования чисел и значений валют.
• Пакет
java.time.format
содержит класс DateTimeFormatter, ко- торый определяет шаблоны для форматирования значений даты и времени.

8
8
Построение
Построение
интерфейсов
интерфейсов
В этой главе
В этой главе
демонстрируется, как
демонстрируется, как
использовать компоненты
использовать компоненты
Java Swing для создания
Java Swing для создания
графических программных
графических программных
интерфейсов.
интерфейсов.
• Создание
окна
• Создание
окна
• Добавление
кнопок
• Добавление
кнопок
• Добавление
меток
• Добавление
меток
• Добавление текстовых полей
• Добавление текстовых полей
• Добавление элементов выбора
• Добавление элементов выбора
• Добавление
переключателей
• Добавление
переключателей
Изменение внешнего вида интерфейса
• Изменение внешнего вида интерфейса
• Размещение
компонентов
• Размещение
компонентов
• Заключение
• Заключение

8. Пос
троение инт
ерфейс
ов
136
Создание окна
В программах на Java можно создавать графический пользовательский интерфейс (GUI ), используя графический компонент библиотеки Java под названием Swing. Пакет javax.swing содержит классы, при помощи которых можно создать разнообразные компоненты, используя стиль операционной системы. Чтобы включить эту возможность, нужно до- бавить оператор импорта в программу: import javax.swing.*;.
Для создания графического пользовательского интерфейса нужно ор- ганизовать класс, к которому можно добавлять компоненты, исполь- зуемые при построении интерфейса. Проще всего это сделать, объявив подкласс класса JFrame при помощи ключевого слова extends — тем самым наследуя атрибуты и методы, которые позволят пользователю работать с окном : перемещать, изменять размер и закрывать.
Конструктор класса должен включать операторы, удовлетворяющие следующим минимальным требованиям:
• заголовок окна — указывается в качестве строкового аргумента на- следуемому методу super() класса JFrame;
• размер окна — указывается значение ширины и высоты в пикселях как аргументы для метода setSize();
• действие при закрытии пользователем окна — определяется кон- стантой, являющейся аргументом для метода setDefaultClose-
Operation()
;
• параметр отображения окна — указывается в виде аргумента гра- фического типа для метода setVisible().
Дополнительно в конструкторе можно добавлять компонент окна — так называемый контейнер JPanel, к которому будут добавляться бо- лее мелкие компоненты при использовании наследуемого метода add() класса JFrame.
Контейнер JPanel (или панель) по умолчанию использует менеджер шаблона FlowLayout, который располагает компоненты в колонках сле- ва направо, привязываясь к правой границе окна.
В шагах, представленных ниже, описывается создание базового окна, содержащего контейнер JPanel с менеджером шаблона FlowLayout. Это окно будет использоваться в дальнейших примерах книги для демон- страции добавления различных компонентов к контейнеру JPanel.
На заметку
Буква x в названии javax.
swing подразумевает JAVA eXtra (дополнение к Java).
Совет
Менеджеры шаблонов описаны более подробно в конце этой главы.

137
1. Создайте новую программу, в которую импортируются все компо- ненты Swing.
import javax.swing.* ;
2. Создайте в классе JFrame подкласс с именем Window, содержащий стандартный метод main.
class Window extends JFrame
{
public static void main ( String[] args ) { }
}
3. Перед методом
main
создайте контейнер JPanel.
JPanel pnl = new JPanel( ) ;
4. Затем добавьте конструктор с указанием параметров окна и добав- лением объекта JPanel к классу JFrame.
public
Window()
{
super( "Окно Swing" ) ;
setSize( 500 , 200 ) ;
setDefaultCloseOperation( EXIT_ON_CLOSE ) ;
add( pnl ) ;
setVisible( true ) ;
}
5. Создайте экземпляр класса Window с добавлением следующей стро- ки в главный метод.
Window gui = new Window() ;
6. Сохраните программу под именем Window.java, затем скомпили- руйте и запустите — вы увидите, что появится базовое окно.
JAVA
Window.java
На заметку
В данном примере значение
EXIT_ON_CLOSE — это кон- станта, являющаяся членом класса JFrame. Она произво- дит выход из программы при закрытии окна.
Совет
Обратите внимание, как ис- пользуется метод add() для добавления объекта JPanel на окно JFrame.

8. Пос
троение инт
ерфейс
ов
138
Добавление кнопок
На графический интерфейс можно добавлять кнопки , которые созда- ются при помощи класса JButton. Этими кнопками пользователь бу- дет взаимодействовать с программой, нажимая на них для выполнения определенного действия.
Объект JButton создается при помощи ключевого слова new, и его кон- структор принимает строковый аргумент, в котором указывается текст, отображаемый на кнопке.
На кнопках можно также располагать изображения. Для этого нужно сначала создать объект изображения — ImageIcon. Конструктору это- го объекта в качестве аргумента указывается имя файла изображения.
Обычно файл изображения размещается рядом с программой, но это необязательно, поэтому аргумент может включать путь к изображе- нию за пределами каталога с программой.
Чтобы отобразить изображение на кнопке, нужно указать имя объекта
ImageIcon
в качестве аргумента конструктору JButton или указать два аргумента — строку и имя объекта ImageIcon. В этом случае на кнопке будет отображаться и текст, и изображение.
1. Отредактируйте копию файла Window.java, описанного ранее, за- менив имя класса Window в объявлении, конструкторе и экземпля- ре на Buttons.
2. Перед конструктором
Buttons()
создайте два объекта изображе- ний ImageIcon.
ImageIcon tick = new ImageIcon( "tick.png" ) ;
ImageIcon cross = new ImageIcon( "cross.png" ) ;
3. Затем создайте три объекта JButton: в первом из них будет ото- бражаться текст, во втором — изображение, а в третьем — и текст, и изображение.
JButton btn = new JButton( "Нажми меня" ) ;
JButton tickBtn = new JButton( tick ) ;
JButton crossBtn = new JButton( "СТОП" , cross ) ;
4. Внутри конструктора
Buttons
() добавьте три оператора для добав- ления компонентов JButton на контейнер JPanel.
pnl.add( btn ) ;
pnl.add( tickBtn ) ;
pnl.add( crossBtn ) ;
Совет
Подробнее о том, как созда- вать методы-обработчики событий, реагирующие на действия пользователя, например нажатие кнопки мыши, будут рассматривать- ся в следующей главе.
JAVA
Buttons.java
На заметку
Для добавления компонен- тов на панель объект JPanel содержит метод add().

139
5. Сохраните программу под именем Buttons.java, затем скомпили- руйте и запустите — вы увидите, как в окне появятся три кнопки.
Кнопки реагируют графически при нажатии на них, но не выполняют никаких действий до тех пор, пока в программе не будет задан метод- обработчик для реагирования на каждое событие нажатия.
В случае если вы намерены распространять программу в виде одиноч- ного Java-архива (JAR), то перед созданием объектов
1   ...   10   11   12   13   14   15   16   17   18


написать администратору сайта