加载屏幕后如果我直接单击按钮,则不会调用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);
提前致谢。
答案 0 :(得分:0)
尝试创建按钮,如下所示
ButtonField button = new ButtonField("Ok", ButtonField.CONSUME_CLICK);
ButtonField.CONSUME_CLICK
表示该按钮消耗了点击事件。
答案 1 :(得分:0)
您的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);
答案 2 :(得分:0)
在将hfm.setFocus()
添加到屏幕管理器之前尝试调用hfm
。