加载屏幕后,如果我直接单击按钮,则不会调用setChangeListener事件,而是当焦点切换到button/hfm时,会调用setChangeListener事件,并且也会获得所需的结果。
可能的原因是什么,请帮我解决这个问题...
HorizontalFieldManager hfm = new HorizontalFieldManager();
ButtonField buttonF = new ButtonField(ButtonField.CONSUME_CLICK);
buttonF.setLabel("View Key");
FieldChangeListener listeneronClick = new FieldChangeListener()
{
public void fieldChanged(Field field, int context)
{
System.out.println("in fieldchange");
ButtonField buttononClick = (ButtonField) field;
buttononClick.setLabel("Hide Key");
}
};
hfm.add(buttonF);
buttonF.setChangeListener(listeneronClick);提前谢谢。
发布于 2012-01-23 19:42:26
尝试创建按钮,如下所示
ButtonField button = new ButtonField("Ok", ButtonField.CONSUME_CLICK);ButtonField.CONSUME_CLICK向按钮指示使用单击事件。
发布于 2012-01-24 02:44:33
您的FieldChangeListener不会执行任何操作,因为它会创建一个新按钮,并且不会将其添加到屏幕上。我猜您只是想更改现有按钮上的文本,因此尝试以下代码:
HorizontalFieldManager hfm = new HorizontalFieldManager();
final ButtonField buttonF = new ButtonField(ButtonField.CONSUME_CLICK);
buttonF.setLabel("View Key");
FieldChangeListener listeneronClick = new FieldChangeListener(){
public void fieldChanged(Field field, int context)
{
System.out.println("in fieldchange");
buttonF.setLabel("Hide Key");
}
};
hfm.add(buttonF);
buttonF.setChangeListener(listeneronClick);发布于 2012-01-24 17:52:23
在将hfm添加到屏幕管理器之前尝试调用hfm.setFocus()。
https://stackoverflow.com/questions/8970980
复制相似问题