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

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

Вводное задание

Сдача задания происходит два раза:

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

1) Создайте новый проект

2) Создайте новый класс MyPanel

3) Укажите что он наследуется от JPanel (import javax.swing.JPanel;)

4) Переопределите метод public void paintComponent(Graphics g) - пусть пока будет без команд внутри

5) Создайте main-функцию и выполните в ней:

  • Создайте объект-окно: JFrame frame = new JFrame() (import import javax.swing.JFrame;)
  • Сделайте окно видимым: frame.setVisible(true);
  • Проверьте что программа запускается (см. горячую кнопку запуска выше) и создает окошко (пока что очень маленькое)
  • Через метод окна setTitle укажите название окна и запустите вновь, чтобы проверить что название изменилось (может потребоваться его увеличить, чтобы рассмотреть название)
  • Если вы что-то не понимаете из того что произошло - позовите меня и спросите

6) Улучшите ваше окошко:

  • Сделайте его побольше: frame.setSize(...);
  • Укажите что при закрытии окошка нужно завершить выполнение программы: frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
  • Создайте объект - вашу панель: MyPanel panel = new MyPanel();
  • Добавьте эту панель в окно: frame.add(panel);
  • Добавьте в вашем классе MyPanel в переопределении метода paintComponent рисование отрезка - через метод g.drawLine(...) у объекта Graphics g (из точки (x=10, y=20) в точку (x=200, y=100))
  • Проверьте что программа запускается и рисует прямую так, как вы ожидали бы
  • Нарисуйте прямоугольник, чья диагональ - это уже нарисованный ранее отрезок (через метод drawRect(...) у графики)
  • Нарисуйте что-нибудь красивое, например единорога (в вашем арсенале еще и drawOval(...), и drawString(...) для добавления текста)
  • Если все хорошо работает - позовите меня, если что-то не работает и вы запутались - иподавно позовите меня

7) Начните рисовать двигающийся отрезок:

  • Метод возвращающий текущее время - System.currentTimeMillis() (измеряется в миллисекундах, т.е. в тысячных секунды) - обратите внимание что он возвращает не int, а long
  • Если она не двигается, то добавьте System.out.println("paint") чтобы проверить как часто происходит отрисовка
  • Оказывается рисование производится всего лишь один раз на старте. Чтобы оно происходило чаще - сделайте в конце main-Функции цикл while (true) { frame.repaint(); }
  • Сделайте так, чтобы отрезок вращалась вокруг своей оси (используйте Math.sin и Math.cos)

8) Добавьте цвета:

  • Перед вызовом drawLine вызовите метод g.setColor(Color.green);
  • Или вы можете передавать произвольный цвет, созданный через конструктор new Color(r, g, b)

9) Сделайте что-нибудь красивое, например полет сквозь звезды: