如何使用命令设计模式将命令传递给命令对象(按钮)

时间:2018-12-13 08:43:51

标签: java casting

我一直在尝试装饰圣诞树,并通过将commandInterface,buttonHandler类和button类作为命令对象来尝试将命令设计模式应用于按钮。 XmasTreeSwing类包含Gui元素和按钮,下面是Button Handler和Command Interface的代码。 Button类实现该接口,并且代码如下所示。在运行时,Button处理程序类将引发强制转换异常。我希望ButtonHandler类将命令传递给适当的Command对象(在此示例中为lightButton)。 在XmasTreeClass内部:

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

commandInterface:

    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 :(得分:1)

ActionEvent.getSource()返回一个javax.swing.jButtone.getSource的运行时对象类型,即javax.swing.jButton必须与CommandInterface相同或派生类型,否则JVM将在运行时抛出ClassCastException,了解对象类型转换。