Java – язык программирования, который популярен у современных разработчиков. На Джаве создают как небольшие программы, так и крупные проекты. Пример – Minecraft.
Чтобы хорошо разбираться в программировании, необходимо знать классы, методы, а также способы их применения. Немаловажный момент – это события. Именно о них зайдет речь далее. Информация пригодится как новичкам, так и опытным разработчикам.
Описание событий
В Google можно отыскать немало полезной информации о том, как пользоваться Java. События и слушатели здесь играют далеко не последнюю роль. Особенно это касается программного обеспечения для бизнеса и разнообразных структур. При разработке игр они тоже применяются весьма успешно.
Event Java – это объект, описывающий корректировку состояния источника, с которым связан ивент. Наглядные примеры:
- нажатие на кнопку;
- выбор элемента из предложенного списка;
- ввод символов при помощи клавиатуры.
События могут осуществляться как через таймер, так и посредством таймеров.
Описание слушателей
Изучая рассматриваемую тему по Google, можно заметить еще один элемент – это Listener. Слушатель – уведомляемый о том или ином событии объект. Для того, чтобы Listeners могли реагировать на Java Events, требуется провести его предварительную регистрацию. Так называется процедура подключения слушателя к источнику.
Listener должен отвечать за реализацию разного рода методов для получения и обработки уведомлений о событиях. Также необходимо запомнить, что:
- по данным Google, слушатель находится в постоянном ожидании, пока в источнике не произойдет заданное ранее событие;
- рассматриваемый элемент получает объект события, чтобы правильно выдавать реакцию;
- источник будет вызывать метод-обработчик ивента, определенный в классе, являющемся блоков прослушки;
- в виде блоков прослушивания можно задействовать внутренние классы.
Когда ивент обработался, слушатель осуществляет возврат управления. Это помогает вызывать лишь те listeners, которые «подписались» на java event.
Разновидности слушателей и событий
Google поможет понять, как правильно создавать ПО на Джаве. Там же находится ключевая информация о событиях и слушателях Java. Пакет java.awt.event обладает определением интерфейсов слушателей для каждого из определенного в нем типов ивентов.
Все listener’s interfaces — это расширения интерфейса java.util.EventListener. В нем не происходит определение методов, но он выступает в качестве «базы». В нем указываются все слушатели событий как таковые. Они будут наследоваться от интерфейса EventListener, а также предназначаться для обработки конкретного типа ивентов.
Listener, согласно данным Google, способен содержать один или несколько методов, принимающих объект event в виде единственного параметра. Вызываются в определенных случаях.
Интерфейс слушателя событий Listener может предусматривать несколько методов. Пример – класс ивентов, подобный MouseEvent, описывает несколько операций, которые связаны с мышью. Сюда относят нажатие и отпускания ПКМ и ЛКМ. Для соответствующего слушателя будут вызываться отдельные методы.
Табличка, представленная выше – это типы событий, которые определены в java.awt.event. Здесь же указаны соответствующие им слушатели и методы, определенные в каждом из interfaces.
В качестве корня иерархического типа, как говорит Google, выступает суперкласс EventObject из пакета java.util. Этот класс предусматривает несколько методов:
- getSouce() – возврат источника ивента;
- toString() – возврат строчного эквивалента event.
Чтобы понять, в каком объекте произошел ивент, необходимо прибегнуть к первому варианту, который вернут значение типа object.
Адаптеры
В Java есть классы-адаптеры. Они, согласно Google, помогают, когда у листенера несколько methods, но просмотреть необходимо один или два из них. Adapters гораздо проще реализовать, чем весь interface в Java.
При применении адаптера возникает необходимость в определении желаемых methods. Если задействована прямая реализация interfaces в Java, то, по Google, требуется определение всех методов. Даже тех, что в соответствующем блоке кодификации не нужны.
Пример класса-адаптера действий с мышью:
Google указывает, что адаптеров всего 7 штук. Кроме уже использованных трех есть еще и:
- ComponentAdapter;
- FocusAdapter;
- KeyAdapter.
Все это пригодится каждому разработчику в процессе коддинга.
Ивенты и визуальные элементы AWT
А вот таблица, которая продемонстрирует перечень визуальных элементов пакета AWT, а также ивентов, которые они порождают. Соответствующий список удастся с легкостью обнаружить в Google.
Листенер – как зарегистрировать
Keyevent – один из ключевых вариантов ивентов в Java. Перед рассмотрением соответствующего примера стоит выяснить, как зарегистрировать листенер. Для этого применяются специальные methods. Их имена имеют форму: addXXXListener(XXXListenet listener) или setXXXListener(XXXListener listener), шде XXX – это имя ивента, а listener – ссылка на слушателя.
Вот код:
package test;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TestFrame extends JFrame
{
private static final long serialVersionUID = 1L;
private JTextField textField;
private JButton button1;
private JButton button2;
private JButton button3;
public TestFrame() {
super("Test frame");
createGUI();
}
public void createGUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
button1 = new JButton("Button 1");
button1.setActionCommand("Button 1 was pressed!");
panel.add(button1);
button2 = new JButton("Button 2");
button2.setActionCommand("Button 2 was pressed!");
panel.add(button2);
button3 = new JButton("Button 3");
button3.setActionCommand("Button 3 was pressed!");
panel.add(button3);
textField = new JTextField();
textField.setColumns(23);
panel.add(textField);
ActionListener actionListener = new TestActionListener();
button1.addActionListener(actionListener);
button2.addActionListener(actionListener);
button3.addActionListener(actionListener);
getContentPane().add(panel);
setPreferredSize(new Dimension(320, 100));
}
public class TestActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
textField.setText(e.getActionCommand());
}
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
TestFrame frame = new TestFrame();
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
Интерфейс будет таким:
В Google полно подобных примеров.
Программный вызов
Еще один момент, достойный внимания перед изучением примера keyevent в Java, который можно рассмотреть при помощи Google – это вызов ивента через программу. На основании предыдущей кодификации можно внести следующие корректировки:
public class TestActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
System.out.println (button.getText() + ", " +
e.getActionCommand());
if (e.getSource() != button3) {
textField.setText(e.getActionCommand());
} else {
ActionEvent e1 = new ActionEvent(button2,
Event.MOUSE_DOWN,
"Button 2 was pressed programmatically!");
Action Listener[] listeners;
listeners = button2.getActionListeners();
listeners[0].actionPerformed(e1);
}
}
}
После того, как клиент нажмет на button3, в консоли появится такая картинка:
Пример KeyEvent
В Google полно examples применения KeyEvent. Описание соответствующих компонентов и методов уже было рассмотрено. Теперь стоит изучить наглядные коды. Каждый example будет отвечать за определенные операции:
- В Google удастся обнаружить короткие нажатия.
- Одновременные нажатия, при которых необходимо прописывать каждую отслеживаемую клавишу.
Через Google удастся отыскать и некоторые видеоуроки. Вот один из них. А на специализированных компьютерных курсах даже новичков научат быстро работать с ивентами и листенерами.