我MultiButton
动态添加了几个,每个都有一个新的ActionListener
。当ActionListener
调用Component
is时,它是is类型,Button
而不是实际MultiButton
对象(即,强制转换为MultiButton导致ClassCastException
无法强制转换Button
为MultiButton
)。
有没有办法得到MultiButton
代替?还是我做了一些愚蠢的事情?
码:
Container cBob = findContainerBob(f);
cBob.removeAll();
for (String str : things) {
MultiButton mb = new MultiButton();
mb.setTextLine1(str);
mb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
MultiButton clickedMb = (MultiButton)evt.getComponent(); // Throws exception
});
cBob.addComponent(mb);
}
如果您在codenameone中查看MultiButton的源代码,则会看到此方法:
/**
* Adds an action listener
*
* @param al the action listener
*/
public void addActionListener(ActionListener al) {
emblem.addActionListener(al);
}
徽章是成员,并声明为Button:
private Button emblem = new Button();
因此,通过evt.getComponent()
调用获得的组件确实是一个按钮。
更新:要使您的按钮成为MultiButton,您应该使用:
MultiButton multiButton = (MultiButton) evt.getComponent().getParent().getLeadParent();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句