我一直在尝试装饰圣诞树,并通过将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
答案 0 :(得分:1)
ActionEvent.getSource()
返回一个javax.swing.jButton
。
e.getSource
的运行时对象类型,即javax.swing.jButton
必须与CommandInterface
相同或派生类型,否则JVM将在运行时抛出ClassCastException
,了解对象类型转换。