Как назначить две кнопки для совместного использования одного и того же класса для обработки событий в Java/swing?обработка событий в java swing
К примеру, у меня есть это:
private class BtnEvtHandler implements ActionListener {
private int counter=10;
public void actionPerformed(ActionEvent e) {
gs.setX(counter);
gs.repaint();
counter=counter+10;
}
public void actionPerformed(ActionEvent e) {
//action for move button
}
}
JButton jumpBtn= new JButton("JUMP");
BtnEvtHandler okButtonHandler= new BtnEvtHandler();
(jumpBtn).addActionListener(okButtonHandler);
menuPanel.add(jumpBtn);
Теперь я хочу добавить еще одну кнопку, как показано ниже, который может иметь один и тот же класс, как обработчик событий, но отправляет к различным actionPerformed, как указано в коде выше.
JButton moveBtn= new JButton("MOVE");
menuPanel.add(moveBtn);
(moveBtn).addActionListener(okButtonHandler);
Затем вы можете добавить аргументы в свой BtnEvtHandler, чтобы определить, что делать. Что-то вроде 'public BtnEvtHandler (Object WHAT_TO_DO)', где Object imo должен быть перечислением, это может зависеть от того, какую логику вы хотите делать в рамках события. Тогда ваш 'actionPerformed' может иметь оператор switch для определения логики, основанной на аргументе WHAT_TO_DO. – porfiriopartida
Вы также можете проверить 'ActionEvent e' на' e.getSource() 'или' e.getActionCommand() 'и решить, что делать. – DSquare