1) Создайте пустой проект.

2) Создайте три готовых класса: Main, MyPanel и MyPauseListener. Исходники доступны здесь.

3) Проверьте что готовый код у вас запускается.

4) Исследуйте код и поймите его, с этим помогут вопросы указанные в main-функции. Убедитесь, что то как окно себя ведет соответствует вашему пониманию кода. Не бойтесь экспериментировать с кодом, убеждаясь что изменение кода приводит к изменениям в поеведении программы ожидаемым вами.

5) Вместе с поиском ответов на вопросы, выполняйте подряд TODO-задания, указанные в main-функции.

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

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

Дополнения

Как рисовать картинки

Такого рода вещи легко найти в интернете, например по запросу “java swing как нарисовать картинку” (напоминаю, что Swing - название пакета который мы используем для создания графического интерфейса).

Окажется, что достаточно:

1) Загрузить на диск из интернета какую-нибудь картинку, например эту.

2) Добавить поле Image unicornImage; в класс MyPanel.

3) Инициализировать его в конструкторе, загрузив картинку с диска, например так: this.unicornImage = ImageIO.read(new File("C:\\downloads\\unicorn.png"));

4) Не забыть сделать все импорты всех новых классов через Alt+Enter.

5) Т.к. загрузка картинки может кинуть ошибку (например если файл не будет найден), поэтому вы будете видеть ошибку Unhandled exception: java.io.IOException - поправьте ее кинув ошибку выше через Alt+Enter (Add exception to method signature) - выше появится throws IOException - это означает что теперь текущий метод (или конструктор) может кинуть ошибку связанную с IO - т.е. связанную с Input Output, т.е. связанную с чтением с диска.

6) Теперь надо нарисовать загруженную картинку - достаточно в отрисовке MyPanel (в методе paintComponent) добавить например g.drawImage(this.unicornImage, centerX, centerY, null);.

Если вы где-то застряли или возникли вопросы - не стесняйтесь спрашивать меня в Telegram, VK или по почте.

Как обрабатывать нажатия мышки

Такого рода вещи тоже легко гуглятся - “java swing как обрабатывать нажатия мышки”.

Окажется что все аналогично тому, что было проделано с MyPauseListener. Отличия:

1) Добавлять слушателя нужно на панель которая рисует шарик (через метод panel.addMouseListener(MouseListener)).

2) Чтобы узнать например в методе public void mouseClicked(MouseEvent e) в каком именно месте находится мышка - нужно вызвать у аргумента MouseEvent e соответствующие геттеры:

@Override
public void mouseClicked(MouseEvent e) {
    System.out.println("Mouse click on (x=" + e.getX() + ", y=" + e.getY() + ")");
}

Если вы где-то застряли или возникли вопросы - не стесняйтесь спрашивать меня в Telegram, VK или по почте.