2010-01-14 4 views
1

J'ai 3 champs dans mes boutons ui 2, un en haut et l'autre en bas d'un champ d'étiquette ... quand jamais le champ de l'étiquette obtient le focus je veux que les boutons apparaissent et je devrait pouvoir cliquer sur eux ... et quand le champ d'étiquette perd le foyer les boutons devraient disparaître ... comment je peux faire ceci ...Blackberry - Visibilité de ButtonField en fonction du focus LabelField

+0

Kaddy vous avait raison au sujet de question, il donne plus amusant :) voir mise à jour! –

Répondre

2

mettez un certain champ de gestionnaire comme placeholder à la position de bouton, puis ajoutez un FocusChangeListener pour étiqueter et utiliser le champ add/delete sur focusChanged pour afficher/masquer le bouton.

MISE À JOUR
Étant donné que chaque changement de mise au point à partir des champs peuvent changer la mise en page, penser de son mieux pour ajouter l'auditeur à chaque champ ajouté à l'écran et espace réservé:

class Scr extends MainScreen { 
    HorizontalFieldManager placeholder = new HorizontalFieldManager() { 
     public void add(Field field) { 
      if (field.getFocusListener() != null) 
       field.setFocusListener(null); 
      field.setFocusListener(focusListener); 
      super.add(field); 
     } 
    }; 
    ButtonField buttonField = new ButtonField("button", 
      ButtonField.CONSUME_CLICK); 
    LabelField labelField = new LabelField("label", FOCUSABLE); 

    public Scr() { 
     add(placeholder); 
     add(labelField); 
     add(new LabelField("label2", FOCUSABLE)); 
    } 

    public void add(Field field) { 
     if (!(field instanceof Manager)) { 
      if (field.getFocusListener() != null) 
       field.setFocusListener(null); 
      field.setFocusListener(focusListener); 
     } 
     super.add(field); 
    } 

    FocusChangeListener focusListener = new FocusChangeListener() { 
     public void focusChanged(Field field, int eventType) { 
      if (eventType == FOCUS_GAINED) { 
       if (field == labelField) { 
        if (buttonField.getManager() == null) 
         placeholder.add(buttonField); 
       } else if (field != buttonField) 
        placeholder.delete(buttonField); 
      } 
     } 
    }; 
} 
+0

J'ai une question .... Je n'ai pas encore testé, mais si le champ de l'étiquette a le focus ... et j'essaie de cliquer sur le bouton .. le bouton ne disparaît pas ... je veux être capable de cliquer le bouton aussi ... s'il vous plaît corrigez-moi si je me trompe ... merci .. – Kaddy

+0

Je soupçonne que cela se produira. Il peut fonctionner sur les appareils tactiles, mais sur les appareils trackball le bouton devra avoir le focus avant de pouvoir être cliqué. Je dois avouer que je suis complètement perplexe quant à ce que vous essayez d'accomplir ici. – Richard

+0

cela ne semble pas fonctionner sur 9500 ... je vois un autre écran qui se chevauchent ... – Kaddy

Questions connexes