如果我有
ComboBox box = b;
b.addActionListener(this);
我不应该期望调用this.actionPerformed(event)
当组合框运行时?
我有一个带有几个组合框的测试框架,似乎可以运行
通常,但是没有调用actionPerformed
。也许是框架
本身需要以某种方式武装起来吗?
答案 0 :(得分:1)
你的问题不是那么清楚,你没有给它一个合适的头衔。
如果要将ActionListener添加到ComboBox
,请执行以下操作:
ComboBox box = new ComboBox();
box.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
}
});
答案 1 :(得分:1)
根据我的理解,你只想从一个处理动作事件的类中创建一个ComboBox。为此,我建议该类继承自ActionListener并覆盖(使用@Override标记)actionPerformed。如果该类未从ActionListener继承,则仅覆盖操作执行是不够的。
public class MyListener extends ActionListener {
@Override
public void actionPerformed (ActionEvent evt){
//code you want to execute when the event happens
}
public void methodCreatingComboBox(){
ComboBox b = new ComboBox();
b.addActionListener(this);
//other stuffs
}
}
这就像魅力一样!并且您可以将同一个MyListener实例用于多个事件。
答案 2 :(得分:0)
这是正确的答案。我使用的是com.codename1.ui.Dialog 顶级窗口。我转而使用com.codename1.ui.Form 现在这些行动正在按预期发射。
Dialog构建的环境中的东西(扩展Form) 正在干扰事件机制。也许是设计。