Java - обрабатывать несколько событий с помощью одной функции? - PullRequest
1 голос
/ 01 февраля 2009

Прежде всего, я полный Java NOOB.

Я хочу обрабатывать несколько нажатий кнопок с помощью одной функции и выполнять определенные действия в зависимости от того, какая кнопка была нажата. Я использую Netbeans, и я добавил событие с функцией привязки. Эта функция отправляет ActionEvent по умолчанию.

Как получить объект, по которому щелкнули, чтобы вызвать функцию привязки внутри этой функции, чтобы я знал, какие функции следует использовать?

Ответы [ 4 ]

7 голосов
/ 01 февраля 2009

Объект, отправивший событие, является источником события, поэтому evt.getSource () получит его. Однако было бы гораздо лучше иметь отдельные обработчики для отдельных событий.

4 голосов
/ 01 февраля 2009

Вызовите метод getSource() события ActionEvent. Например:

public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    // 'source' now contains the object clicked on.
}
1 голос
/ 02 февраля 2009

Обрабатывать несколько нажатий кнопок с помощью одной функции ( метод ), только если все эти нажатия кнопок делают точно то же самое.

Даже в этом случае есть закрытый метод и вызывайте этот закрытый метод из всех мест, где это необходимо.

Нетрудно написать отдельные обработчики событий для разных кнопок. В простейшем случае напишите анонимные обработчики следующим образом:

aButton.addActionListener(new java.awt.event.ActionListener()
    {
        public void actionPerformed(ActionEvent ae)
        {
            myMethod();
        }
    });

В более сложном сценарии напишите отдельный класс, который расширяет ActionListener, и используйте его внутри вызова addActionListener() выше.

Это не сложно, легко поддерживать и расширять, и намного лучше, чем один actionPerformed для всего.

(В NetBeans щелкните правой кнопкой мыши кнопку (и), События-> Действие-> actionPerformed, код создан для вас)

0 голосов
/ 01 февраля 2009

Если вы используете события AWT, то ActionEvent поддерживает метод getSource (), который даст вам объект, который предположительно сгенерировал событие.

При этом существуют лучшие конструкции, в которых каждый объект создает свой собственный обработчик событий

...