Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface Blackberry storm 9530在滚动时跟踪触摸事件_User Interface_Blackberry_Scroll_Focus_Rim 4.7 - Fatal编程技术网

User interface Blackberry storm 9530在滚动时跟踪触摸事件

User interface Blackberry storm 9530在滚动时跟踪触摸事件,user-interface,blackberry,scroll,focus,rim-4.7,User Interface,Blackberry,Scroll,Focus,Rim 4.7,嘿,在我的屏幕上有一个编辑字段和两个自定义按钮字段,分别是“确定”和“取消” 在buttonfield下面有一些更可聚焦的标签字段 当我在编辑栏写下一个名字并按回车键时,焦点会转到“OK”按钮,但如何将焦点设置到“CANCEL”按钮 此外,滚动焦点时不会自动向前移动 该怎么办可能是我对触摸事件及其处理感到困惑 请帮忙 代码: 您可以通过覆盖屏幕或包含可聚焦字段的管理器上的“navigationMovement”方法来控制聚焦顺序,如OK和cancel按钮。只需计算传递给该方法的参数,使用fiel

嘿,在我的屏幕上有一个编辑字段和两个自定义按钮字段,分别是“确定”和“取消” 在buttonfield下面有一些更可聚焦的标签字段

当我在编辑栏写下一个名字并按回车键时,焦点会转到“OK”按钮,但如何将焦点设置到“CANCEL”按钮

此外,滚动焦点时不会自动向前移动

该怎么办可能是我对触摸事件及其处理感到困惑

请帮忙

代码:


您可以通过覆盖屏幕或包含可聚焦字段的管理器上的“navigationMovement”方法来控制聚焦顺序,如OK和cancel按钮。只需计算传递给该方法的参数,使用field.setFocus()将焦点设置在所需的字段上,然后返回true


至于焦点不随滚动而移动,这正是触摸屏UI的工作方式。焦点仅在您触摸可聚焦字段时移动-因此,如果您在“轻弹”屏幕滚动时未触摸任何可聚焦字段,则焦点不会改变。

我按照Mark的建议制作了每个按钮的单独的FieldChangeListeners:

class Scr extends MainScreen {
    EditField txt_Name;
    ButtonField btnOK;
    ButtonField btnCancel;
    VerticalFieldManager v1;
    VerticalFieldManager v2;
    VerticalFieldManager v3;
    Font font = Font.getDefault().derive(Font.BOLD, 20);

    public Scr() {
        txt_Name = new EditField(TextField.NO_NEWLINE) {
            public void paint(net.rim.device.api.ui.Graphics g) {
                g.setColor(Color.MAROON);
                super.paint(g);
            }
        };

        txt_Name.setFont(font);

        v1 = new VerticalFieldManager();
        v1.add(txt_Name);

        btnOK = new ButtonField("OK", ButtonField.CONSUME_CLICK);
        btnOK.setChangeListener(
            new FieldChangeListener(){
                public void fieldChanged(Field field, int context) {
            Dialog.inform("OK pressed");
        }});
        btnCancel = new ButtonField("Cancel", ButtonField.CONSUME_CLICK);
        btnCancel.setChangeListener(
            new FieldChangeListener(){
                public void fieldChanged(Field field, int context) {
            Dialog.inform("Cancel pressed");
        }});
        v2 = new VerticalFieldManager();
        v2.add(btnOK);
        v2.add(btnCancel);

        LabelField l1 = new LabelField("Hello Moon", Field.FOCUSABLE);
        LabelField l2 = new LabelField("Hello Citizen", Field.FOCUSABLE);
        LabelField l3 = new LabelField("Hello People", Field.FOCUSABLE);
        LabelField l4 = new LabelField("Hello world", Field.FOCUSABLE);

        v3 = new VerticalFieldManager();
        v3.add(l1);
        v3.add(l2);
        v3.add(l3);
        v3.add(l4);

        add(v1);
        add(v2);
        add(v3);
    }
}
现在看来一切正常:

更新

斯瓦蒂我可以点击这些按钮与风暴模拟器使用鼠标点击。 除了模拟器中的cod文件来自旧版本之外,我找不到任何其他解释。您可以通过更改代码中的任何标签文本来快速检查它,然后部署并检查此更改是否将应用于设备上的应用程序。如果不是,这是旧版本,您应该清理模拟器并再次部署应用程序。
希望这对你有帮助

另请参见

我面临的问题是:当我在编辑字段中输入名称时,说“你好”,然后我触摸ok按钮,但由于焦点仍在编辑字段上,因此当我触摸ok按钮时,其相应的代码不会执行。。我尝试过使用TouchEvent、navigationClick、navigationmovement,但cldnt找不到解决方案,我的按钮无法调用,怎么办???尝试在每个按钮上设置一个FieldChangeListener,而不是使用屏幕的导航单击。Marc我尝试了你对buttonField所说的,但仍然不起作用。nw我使用了一个自定义字段来代替button,它是一个有图像的可聚焦字段,但也不起作用。max我正在以相同的方式工作,但当我按下ok n cancel(确定/取消)按钮时,仍然无法对焦。它太简单了,仍然无法执行。天哪,我做错了什么??????????非常感谢你的努力。。。。让我来看看我犯了什么愚蠢的错误。当我按下键盘上的箭头键时,他们的注意力集中在按钮上。现在该怎么办。我删除了我的代码,并与你的代码一起工作了。它工作了!!!!我认为在我的例子中,问题在于自定义按钮字段没有显示焦点……如果需要自定义按钮的帮助,请用代码发布新问题,以便我们可以尝试;)Swati,请描述,出现了什么问题,您如何滚动屏幕(如果是模拟器,请使用鼠标或PC键盘),滚动可用的原因(更多控件、大量输入文本、方向更改等)Swati我看到更新我的答案
class Scr extends MainScreen {
    EditField txt_Name;
    ButtonField btnOK;
    ButtonField btnCancel;
    VerticalFieldManager v1;
    VerticalFieldManager v2;
    VerticalFieldManager v3;
    Font font = Font.getDefault().derive(Font.BOLD, 20);

    public Scr() {
        txt_Name = new EditField(TextField.NO_NEWLINE) {
            public void paint(net.rim.device.api.ui.Graphics g) {
                g.setColor(Color.MAROON);
                super.paint(g);
            }
        };

        txt_Name.setFont(font);

        v1 = new VerticalFieldManager();
        v1.add(txt_Name);

        btnOK = new ButtonField("OK", ButtonField.CONSUME_CLICK);
        btnOK.setChangeListener(
            new FieldChangeListener(){
                public void fieldChanged(Field field, int context) {
            Dialog.inform("OK pressed");
        }});
        btnCancel = new ButtonField("Cancel", ButtonField.CONSUME_CLICK);
        btnCancel.setChangeListener(
            new FieldChangeListener(){
                public void fieldChanged(Field field, int context) {
            Dialog.inform("Cancel pressed");
        }});
        v2 = new VerticalFieldManager();
        v2.add(btnOK);
        v2.add(btnCancel);

        LabelField l1 = new LabelField("Hello Moon", Field.FOCUSABLE);
        LabelField l2 = new LabelField("Hello Citizen", Field.FOCUSABLE);
        LabelField l3 = new LabelField("Hello People", Field.FOCUSABLE);
        LabelField l4 = new LabelField("Hello world", Field.FOCUSABLE);

        v3 = new VerticalFieldManager();
        v3.add(l1);
        v3.add(l2);
        v3.add(l3);
        v3.add(l4);

        add(v1);
        add(v2);
        add(v3);
    }
}
    txt_Name = new EditField(TextField.NO_NEWLINE)
            {
                public void paint(net.rim.device.api.ui.Graphics g)
                {
                    g.setColor(Color.MAROON);
                    super.paint(g);
                }
           };

            txt_Name.setFont(font);

     v1 =  new VerticalFieldManager();
     v1.add(txt_Name );


    ButtonField btn1 = new ButtonField("OK",ButtonField.CONSUME_CLICK);
    ButtonField btn2 = new ButtonField("CANCEL",ButtonField.CONSUME_CLICK);

     h2 =  new HorizontalalFieldManager();
     h2.add(btn1);
     h2.add(btn2);

    LabelField l1 = new  LabelField("Hello Moon ",Field.Focussable);
    LabelField l2 = new  LabelField("Hello Citizen",Field.Focussable);
    LabelField l3 = new  LabelField("Hello People",Field.Focussable);
    LabelField l4 = new  LabelField("Hello world",Field.Focussable);

     v3 =  new VerticalFieldManager();
     v3.add(l1);
     v3.add(l2);
     v3.add(l3);
     v3.add(l4);

    add(v1);
    add(h2);
    add(v3);
}


protected boolean navigationClick(int status, int time) 
    {
int index = h2.getFieldwithFocusIndex();
     if(h2==0)
             {
                //execute some code for OK
                return true;
             }
if(h2==1)
             {
                //execute some code for cancel
                return true;
             }
        }