Полезные горячие кнопки в IDEA:

  • Чтобы быстро создать main-функцию: напечатать внутри класса вне каких-либо методов psvm и нажать Enter
  • Чтобы импортировать класс (когда он красный): поставить каретку для печатанья на класс и нажать Alt+Enter->Import
  • Чтобы отформатировать код: Alt+Ctrl+L
  • Чтобы запустить редактируемый в данный момент файл: Ctrl+Shift+F10
  • Чтобы IDE подсказала какие методы и поля есть у данного объекта: напечатать myObject. (можно еще явно нажать Ctrl+Space)
  • Чтобы посмотреть какие аргументы принимает метод: напечатать g.drawLine( и нажать Ctrl+P

Правила сдачи

  • До конца сегодняшнего занятия вы должны показать до чего вы успели дойти и получить оценку за урок
  • В начале урока 17 декабря вы должны запустить на компьютере то что вы доделали дома и получить оценку за домашнее задание

Пример

1) Создайте окошко:

JFrame

2) Добавьте на окошко кнопку:

JFrame

3) Чтобы добавить кнопке какое-то действие в случае клика - нужно воспользоваться методом button.addActionListener:

В дословном переводе этот метод означает “добавить слушатель события”. Чтобы посмотреть какие у метода аргументы - можно нажать Ctrl+P:

addActionListener

У единственного требуемого аргумента тип ActionListener - это интерфейс, поэтому надо создать новый класс MyButtonActionListener и реализовать в нем данный интерфейс (ключевое слово implements):

addActionListener

В ошибке сказано что раз вы заявили что ваш клас реализует интерфейс “слушатель события” (implements ActionListener), то вы должны реализовать его абстрактный метод actionPerformed(ActionEvent).

Чтобы это просто сделать, достаточно поставить каретку ввода на строчку с этой ошибкой и нажать Alt+Enter -> Implements methods:

actionPerformed

Теперь ваш класс реализовал ActionListener (т.е. можно сказать что MyButtonActionListener является ActionListener) и его экземпляр (т.е. объект созданный как всегда через new) можно передать в addActionListener.

Задание 1 Убедитесь что при нажатии на кнопку в консоли появляется сообщение которое вы печатаете при обработке событий кнопки.

4) Укажите Layout

В окне кнопки и другие компоненты нужно как-то взаимно расположить. Для этого у окна можно указать “расположение внутренних компонент”, т.е. Layout. Для этого есть метод setLayout, смотрим какого типа аргумент он принимает через Ctrl+P:

setLayout

Некий LayoutManager, это тоже интерфейс как и ActionListener, но его не обязательно реализовывать в своем новом классе, т.к. есть уже несколько готовых.

Например есть менеджер который располагает компоненты на регулярной решетке, т.е. по сути ввиде таблицы из скольки-то строк и скольки-то столбцов. Этот менеджер представлен классом GridLayout.

Чтобы посмотреть, какие аргументы принимает его конструктор - опять можно воспользоваться Ctrl+P:

GridLayout

Конструктор ожидает два аргумента - количество строк (rows, т.е. рядов) и количество столбцов (cols = columns, т.е. колонок).

Задание 2 Создайте шесть кнопок с указанием номера кнопки в названии кнопки, при нажатии кнопку с номером N в консоль должно печататься сообщение testN, и расположенны кнопки должны быть так:

Buttons

Задание 3 Воспользуйтесь классом JLabel (который наравне с JButton является компонентом который можно добавить в окно) и сделайте три кнопки с текстом рядом с ними печатающие разный текст:

Buttons with labels

Задание 4 Сделайте калькулятор наподобие этого:

Calculator

  • Калькулятор при нажатии на цифру должен дописывать эту цифру к полю вверху.
  • При нажатии на арифметическую операцию калькулятор должен запомнить текущее число и очистить поле для ввода числа, а затем (при нажатии на кнопку равенства) посчитать и вывести результат.
  • При нажатии на C калькулятор должен очистить поле для ввода чисел и сбросить текущую выполняемую арифметическую операцию (если она есть)

Подсказки:

  • Чтобы окно приняло размер соответствующий количеству компонент внутри - frame.pack();
  • Поле для ввода - JTextField
  • У классов JTextField и JLabel есть методы getText() и setText(String)
  • Чтобы приобразовать строку в число можно воспользоваться конструктором Integer - пример: int x = new Integer("239");
  • Для группировки компонентов может быть удобно использовать JPanel (и указать у каждой панели свой Layout)