Как передавать команды объектам команд (кнопкам), используя шаблон проектирования команд - PullRequest
0 голосов
/ 13 декабря 2018

Я пытался сделать украшение для елки, и я пытаюсь применить шаблон дизайна команды к моим кнопкам, создавая commandInterface, buttonHandler class и button button как объекты команды.Класс XmasTreeSwing содержит элементы Gui и кнопки, ниже приведен код для Button Handler и Command Interface.классы Button реализуют интерфейс и код выглядит следующим образом.Во время выполнения класс обработчика Button создает исключение приведения.Я хочу, чтобы класс ButtonHandler передавал команды нужному объекту Command (lightButton в этом примере).Внутри класса XmasTreeClass:

    ButtonHandler handler = new ButtonHandler();
    lightButton.addActionListener(handler);
    ornamentButton.addActionListener(handler);

Интерфейс команды:

    public interface CommandInterface{
    public void processEvent();
    }

Класс ButtonHandler:

public class ButtonHandler extends JButton implements ActionListener {

@Override //coding the event handling routine
public void actionPerformed(ActionEvent event) {

    CommandInterface command = event.getSource();

}

И, наконец, класс LightButton:

public class lightButton extends JButton implements CommandInterface {

public lightButton() {

}

@Override
public void processEvent() {
  //Some code
}

 public lightButton(String name) {
    super(name);
}
}//class

1 Ответ

0 голосов
/ 13 декабря 2018

ActionEvent.getSource() возвращает javax.swing.jButton.Тип объекта времени выполнения e.getSource, т. Е. javax.swing.jButton должен быть того же или производного типа CommandInterface, в противном случае JVM выдаст ClassCastException во время выполнения, читайте о приведении типа объекта.

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