[Java] Введение в GUI - Swing
Полезные горячие кнопки в 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) Сделайте что-нибудь красивое, например полет сквозь звезды: