Question

hey dans mon écran il y a un champ d'édition et 2 champs de boutons personnalisés comme « OK » et « Annuler » Ci-dessous ButtonField il y a des champs d'étiquette plus focalisable

quand j'écris un nom dans le champ d'édition et appuyez sur Entrée puis vient à se concentrer sur « OK », mais la façon de mettre l'accent sur le bouton « Annuler ».

De plus en faisant défiler la mise au point ne se déplace pas automatiquement avant ???

quoi faire peut-être que je suis confondu avec les événements tactiles et leur manipulation !!!

Veuillez aider !!!!!!!!!!!!

Code:

        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);

     v2 =  new VerticalFieldManager();
     v2.add(btn1);
     v2.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(v2);
    add(v3);
}


protected boolean navigationClick(int status, int time) 
    {
     if(OK.isFocus())
             {
                //execute some code
                return true;
             }
if(CANCEL.isFocus())
             {
                //execute some code
                return true;
             }
        }
Était-ce utile?

La solution 2

    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;
             }
        }

Autres conseils

J'ai fait comme Mark a suggéré, FieldChangeListeners séparés pour chaque bouton:

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);
    }
}

Maintenant, il semble être OK:
  texte alt http://img40.imageshack.us/img40/6472/textentered.jpg texte alt http://img59.imageshack.us/img59/7574/okpressed .jpg texte alt http://img641.imageshack.us/img641/ 9246 / cancelpressed01.jpg

UPDATE

Swati je peux cliquer sur ces boutons avec le simulateur Storm à l'aide d'un clic de souris. Je ne peux trouver aucune autre explication que le fichier de la morue dans le simulateur est de version ancienne. Vous pouvez le vérifier rapidement en changeant le texte de l'étiquette dans le code, puis déployer et vérifier si ce changement sera appliqué dans l'application sur l'appareil. Dans le cas sinon, c'est l'ancienne version et vous devez nettoyer simulateur et déployer l'application à nouveau.
Espérons que cela vous aidera!
Voir aussi BlackBerry - Les changements ne se font pas reflétées dans mon application

Vous pouvez contrôler l'ordre de mise au point en redéfinissant la méthode « navigationMovement » sur l'écran ou le gestionnaire contenant les champs vario, tels que les boutons bien et annuler. Il suffit d'évaluer les arguments transmis à cette méthode, l'accent mis sur le champ souhaité en utilisant Field.setFocus (), et retourne vrai.

En ce qui concerne la mise au point ne bouge pas de l'avant avec le défilement - c'est juste la façon dont les œuvres de l'interface utilisateur de l'écran tactile. L'objectif ne se déplace que lorsque vous touchez un champ focalisable -. Donc, si vous ne touchez pas les champs vario lorsque vous « film » l'écran pour faire défiler, l'accent ne changera pas

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top