Выбирая между Eclipse и Intellij IDEA выбрала второй вариант. Почему второй? Просто в Eclipse уже тыкалась, а об Intellij IDEA узнала из проекта JavaRush. Итак, перед началом работы установила Intellij IDEA 13 и jdk 1.7 JDK (Java Development Kit) - это инструмент для работы с языком Java,в котором есть компилятор, интерпретатор, отладчик и другими инструменты, включает в себя обширнейшую библиотеку классов Java.
Забыла указать самое главное - Цель работы.
Цель работы при изучении основ Java - это создать простое оконное приложение(Frame), в котором будет находиться кнопка(Button) и выполнять какое-то действие.
Перед началом работы познакомилась с существующими компонентами в Java, такими как Label, Button, Panel, TextArea.
Посмотрела как их создают, если сравнить с as3, то принцип такой же, поэтому заострять внимание не стала.
Остался один вопрос. Почему я выбрала пакет awt, а не swing? Да очень просто, когда я читала про java, то там писали про awt.
А про swing я узнала уже потом, когда писала программу, но решила, так как у них принцип работы одинаковый, то не стоит заморачиваться.
Ну да, в swing есть уже свои навороты, но о них можно будет узнать потом, если потребуется, а сейчас достаточно основ.
Запускаем среду разработки и видим следующее
Рисунок 1- Выбор действий
Сначала можно войти в Configure - Settings - и произвести какие-нибудь настройки.
Но на мой взгляд там всё настроено и ничего менять не нужно, поэтому для новичка можно изменить только тему среды.
Для этого внизу смотрим на надпись IDE Settings и первое у меня это Appearance.
Выбираю ее и справа в окне есть выпадающий список Theme.
Меняю, на какую нужно и нажимаю внизу на кнопку OK. Среда перезагрузится и покажет выбранную мной тему.
Возвращаемся к нашим баранам, а точнее к рисунку 1. И как уже показано на картинке, выбираем пункт Создать новый проект. Открывается следующее окно
Рисунок 2 - New project
Здесь необходимо заполнить поля. Вписываю имя проекта, указываю место, куда сохранить проект и указываю, куда я установила jdk.
Своему проекту дала имя MyFrameButton. Всё заполнила и нажала OK.
Дальше у нас создается и открывается проект. Но для начала работы этого не достаточно. Теперь требуется создать свой первый класс.
Рисунок 3 - Внешний вид проекта
На рисунке можно увидеть класс FirstProgram. Этот класс был создан мной для работы. Как я это сделала?
Да очень просто. Выбрала папочку src, это видно на рисунке. Открыла контекстное меню и выполнила следующее действие: New - Java Class.
Программа потребовала с меня имя класса, вот я и написала FirstProgram, затем нажала OK и получила поле для работы.
Ну вот, пришло время и покодить.
Кодирование
В созданный класс первым делом в самом вверху написала
import java.awt.*;
Решила в конце указать (* - всё), так как еще не знаю, что мне понадобится от туда.
При кодировании рядом с моей строчкой появились следующие. Я их не писала, они сами вписались.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
Так же отмечу, что при создании класса автоматически появилась следующая строчка
public class FirstProgram{}
Я ее немножко дополнила до такой строки
public class FirstProgram extends Frame{
Комментирую.
public - это модификатор доступности. Так как это имя класса с которым я работаю, то он должен быть у меня доступным (общественным).
После имени класса добавила слово
extends - что означает унаследовать. Мой класс будет наследником класса Frame. На основе этого класса, я буду создавать оконное приложение.
Итак, в буквальном смысле, это звучит так: Общественный класс FirstProgram является потомком класса Frame, что значит, имеет доступ к его свойствам и методам.
При создании программы обратила внимание, что конструктор класса не создается автоматически, отличии от AS3.
Поэтому прописала конструктор класса.
public FirstProgram(){}
Отмечу, что это конструктор класса, поэтому у него такое же имя как и у класса. Ну и модификатор такой же.
После конструктора добавила статическую точку входа программы.
public static void main(String args[]){}
Как я прочитала, эта точка для запуска программы. А статическая, потому что она одна должна быть во всём проекте.
Модификатор public для того, что бы она была доступна всем в проекте.
Настройка окна приложения
В as3 первым делом вызывали предка, а потом проводили все остальные действия. В Java оказывается тот же принцип и вызывается так же.
Итак, в конструкторе первым делом запишем такие строчки
super("Первая программа");
// вызываем предка, в данном случае Frame и указываем какое имя заголовка будет
setSize(200, 200);
// что бы окно не появлялось маленьким, устанавливаем нужный нам размер.
рисунок 4 - Внешний вид окна без параметров
Пора уже определиться с тем, что у нас будет на форме.
Внешний вид
На форме у нас будет Label, в котором показывается какое-то сообщение.
В нижней части экрана располагается кнопка Button, при нажатии на которую будет происходить какое-то действие.
Самое простое действие - это инкремент, т.е увеличение числа на 1.
Пишем следующее:
private int countClick=0;
// переменная счетчик, устанавливаю начальное значение 0
private Button myButton;
// переменная для Кнопки
private Label myText;
// переменная для Текста
В конструкторе класса создаем объекты
myButton = new Button("Hello");
// создаем Кнопку с надписью на ней Hello
myText = new Label("Hello World "+countClick);
// создаем текстовое поле с надписью Hello World и добавляем к нему отображение счетчика
Также нужно учесть расположение объектов на форме. Для этого добавляем следующий код:
add(myText, BorderLayout.NORTH);
// Label будет расположен вверху, что значит на Северной части формы
add(myButton, BorderLayout.SOUTH);
// Button будет расположен внизу, значит на Южной части формы
Но что же будет, если я не напишу расположение. Прикинем на примере myText. Закомментируем его, но оставим для myButton.
В результате я увижу такую форму.
рисунок 5 - Без Label
Итак, мы видим кнопку с надписью, но текстового поля с надписью на форме нет. Вот так будет выглядеть приложение, если забыть про расположение.
Событие Кнопки
Подходим постепенно к завершению. Как и AS3 оказывается Java тоже использует Слушателя для создания события.
Однако есть отличия. В AS3 я использовала addEventListener, а тут addActionListener.
Итак, события нужно для кнопки, поэтому вешать слушателя нужно кнопки.
Для этого я пишу имя объекта кнопки, ставлю точку и выбираю из выпадающего списка событие слушателя.
Таким образом у меня получается вот так.
myButton.addActionListener();
Ну вот, в AS3 я прописывала свое название события и константу события, а в Java нужно написать создание нового события, т.е new ActionListener.
Выглядит это так
myButton.addActionListener(new ActionListener()
Как только я это написала, то увидела, что была автоматически создана следующая строка.
Отмечу еще раз, я ее не писала, она САМА автоматически появилась после моей строчки.
@Override
public void actionPerformed(ActionEvent e) {
Итак, я вижу, что мне автоматически подготовили место для работы. Поэтому внутри процедуры я впишу следующий свой код.
countClick++;
// увеличиваю переменную на 1
myText.setText("Hello World "+countClick);
// обновляю текст в Label. Решила оставить текст без изменения, но могла бы вместо Hello World написать что-то другое.Так что обновляется только счетчик.
}
// закрываю actionPerformed
}
// закрываю new ActionListener
);
// закрываю скобку события Слушателя
Ну вот и всё. Код в классе FirstProgram закончился. Осталось прописать код для запуска созданного класса.
Кодируем в Main
FirstProgram myProgram = new FirstProgram();
// создаем объект myProgram своего созданного класса FirstProgram
myProgram.setVisible(true);
// устанавливаем видимость объекта.
В принципе этого достаточно. Однако, я обратила внимание, при работе с приложением я могу окно свернуть, развернуть, но не могу его закрыть.
Оказывается этот функционал подключается отдельно. Так как я всё же хочу закрывать свое окно, то решила подключить и эту функцию.
Закрыть окно
Для работы с меню окна используется слушатель window, а за закрытие отвечает адаптер.
Прочитала, что событие WindowClosing отвечает за закрытие окна на крестик. А чтобы окно закрывалось используют команду dispose().
Соединив всю информацию вместе, получила следующий код:
myProgram.addWindowListener(new WindowAdapter() {
// так как действие должно быть с окном, то вешаем событие на созданный объект.
Принцип работы тот же, что и был, выбираю, прописываю new WindowAdapter() и появляется внизу текст события
@Override
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
// этот текст был создан автоматически. Я вижу, что вызывается родитель с методом Закрыть окно,
в качестве аргумента отправляют Событие(event), с которым нужно дальше работать для реализации метода.
Следуя созданной для меня записи, я написала следующий код
e.getWindow().dispose();
// использую полученное событие, указываю, что мне нужно окно этого события, и указываю, что я хочу с ним сделать, а точнее уничтожить или освободить.
}
}
);
Всё. Запускаю и вижу, что программа работает.
|