Получить имя объекта источника события в java

81
8

Я создаю несколько обработчиков событий и сохраняю чистоту, а не массивный стек if... else для объектов 20+, которые могут быть источником в каждом обработчике, я пытаюсь использовать переключатель -дело. Проблема, конечно, в том, что вы не можете включить объект, который event.getSource(); возвращает и после него с.toString() возвращает ничего, что может быть легко использовано для каждого случая. Мне интересно, есть ли способ получить имя объекта источника события в строке, которую можно использовать в коммутаторе. Текст кнопки, а не ее имя, мог бы работать, но я также пытаюсь сделать это с помощью текстовых полей, и в этом случае будет работать только имя. Я только натолкнулся на одно решение, но по какой-то причине это не работает.

public class EntryHandler implements ActionListener 
{
@Override
public void actionPerformed( ActionEvent event )
{
if( event.getSource() == addEntryButton )
{
Object source = event.getSource();
String bString;
if (source instanceof JButton)
{
bString = ((JButton) source).getName();
} else {
bString = "Wrong";
}
System.out.printf("b name: %s", bString);
entryData.addTableEntry();
} ... more if for other buttons...

по какой-то причине это всегда печатает "b name: null"

Я всегда мог бы использовать стек if... else, который, как он реализуется в настоящее время, но выглядит как гигантский беспорядок. Будут оценены любые предложения или альтернативы.

спросил(а) 2015-08-02T22:53:00+03:00 5 лет, 2 месяца назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема