为什么ActionEvent组件的类型错误?

时间:2014-01-27 10:12:14

标签: java codenameone

我动态添加了一些MultiButton,每个都有一个新的ActionListener。调用ActionListener时,Component的类型为Button,而不是实际的MultiButton对象(即投射到MultiButton导致ClassCastException无法投射{{ 1}}到Button)。

有没有办法获得MultiButton?或者我做了些傻事?

代码:

MultiButton

1 个答案:

答案 0 :(得分:2)

http://code.google.com/p/codenameone/source/browse/trunk/CodenameOne/src/com/codename1/components/MultiButton.java?r=317

如果你看一下codenameone中MultiButton的来源,你会看到这个方法:

/**
 * Adds an action listener
 * 
 * @param al the action listener
 */
public void addActionListener(ActionListener al) {
    emblem.addActionListener(al);
}

会徽是会员并宣布为按钮:

private Button emblem = new Button();

因此,您通过evt.getComponent()电话获得的组件确实是一个按钮。

更新: 要将按钮作为MultiButton,您应该使用:

MultiButton multiButton = (MultiButton) evt.getComponent().getParent().getLeadParent();