2015-09-17 3 views
0

Я новичок в Java. Я нашел следующий фрагмент кода в Интернете, пытаясь понять механизм обработки событий Java. Этот код взят из JavaTpoint.comПочему такое ключевое слово используется здесь?

import java.awt.*; 
import java.awt.event.*; 

class AEvent extends Frame implements ActionListener{ 
TextField tf; 
AEvent(){ 

tf=new TextField(); 
tf.setBounds(60,50,170,20); 

Button b=new Button("click me"); 
b.setBounds(100,120,80,30); 

b.addActionListener(this); 

add(b);add(tf); 

setSize(300,300); 
setLayout(null); 
setVisible(true); 

} 

public void actionPerformed(ActionEvent e){ 
tf.setText("Welcome"); 
} 

public static void main(String args[]){ 
new AEvent(); 
} 
} 

Я изучал различные виды использования «это» ключевое слово в Java & понял, что он используется для передачи текущего объекта в качестве аргумента к следующему методу.

b.addActionListener(this); 

Однако, я не понимаю, почему существует необходимость передать объект в качестве аргумента. Что именно делает программа, выполняя это?

Прошу прощения, если такие вопросы уже существуют или это звучит как глупый вопрос, но я всего лишь новичок.

Спасибо за ваше время!

+2

Добро пожаловать в Переполнение стека. Пожалуйста, найдите время, чтобы отформатировать свой код, когда вы публикуете - это намного проще для всех, чтобы читать правильно отложенный код. –

ответ

0

Ваш класс AEvent реализует интерфейс ActionListener и должен реализовать метод actionPerformed(ActionEvent e). Итак, класс - это прослушиватель действий.

В конструкторе класса определяется Button и он хочет знать, что должно произойти, если оно нажато. Итак, вы регистрируете ActionListener, который «прослушивает» клик.

As Listener вы регистрируетесь this, потому что this является действительным слушателем. Так что, если вы нажмете кнопку, она откроется для добавления слушателя и вызовет метод actionPerformed. И этот метод оказывается в одном классе.

Вы делаете это, чтобы не создавать много классов слушателей. Но вы также можете определить новый класс, реализующий интерфейс, и зарегистрировать экземпляр нового класса в качестве слушателя.

0

Когда ваша кнопка нажата, событие отправляется в указанный вами ActionListener. Здесь это экземпляр AEvent, создающий кнопку.

1

Класс, который реализует интерфейс ActionListener, является классом «этот».

Метод addActionListener принимает параметр типа ActionListener p, потому что этот класс реализует интерфейс ActionListener, слово «this» может использоваться как аргумент.

EDIT: Он выполняет доступ к методу actionPerformed, определенному в этом классе.

+0

@ChiefTwoPencils Выполняет доступ к методу actionPerformed, определенному в этом классе? – RamanSB

0

Здесь это относится к классу AEvent и потому, что он реализует интерфейс ActionListener, поэтому вы можете передать его в качестве аргумента. Так что это пример AEvent

Однако я не понимаю, почему необходимо передать объект в качестве аргумента. Что именно делает программа, выполняя это?

Его api, который хочет, чтобы вы предоставили объект, который фактически реализует интерфейс ActionListener. И поскольку AEvent делает это, реализуя метод actionPerformed, вы передали это.
Когда вы нажимаете кнопку или можете сказать триггерное событие onclick на кнопке, вы можете ответить на него, выполнив метод actionPerformed. Либо дальнейшая обработка или показывая любого messages.`

Для получения более подробной информации следует обратиться к here

0

«это» в Java относится к текущему экземпляру. вы можете зарегистрировать кнопку для прослушивания действия пользователя с помощью этого кода b.addActionListener (this);

Где «б» является объектом Button и «это» есть объект «ActionListener», в вашем примере вы можете использовать «это», так как ваш класс реализует интерфейс «ActionListener»

Смежные вопросы