2010-03-12 9 views
1

J'ai un écran avec deux objets RadioButtonField. Par défaut, le premier RadioButtonField affiche un rectangle autour de lui pour montrer son sélectionné, et le rectangle se déplace si vous changez la sélection à l'autre RadioButtonField ou d'autres boutons et zones de texte sur la page. Ce que je voudrais savoir, c'est ... est-il possible de cacher cette bordure qui montre la sélection/bordure?BlackBerry - RadioButtonField, masquer la bordure sur la sélection

Répondre

1

si vous en 4.6 et plus, essayez de setBorder() sans arêtes:

alt text http://img139.imageshack.us/img139/672/rbnoborder.jpg

class Scr extends MainScreen { 
    EditField editField = new EditField("edit field", "text"); 
    RadioButtonGroup rbGroup = new RadioButtonGroup(); 
    RadioButtonField rbField = new RadioButtonField("First field"); 
    RadioButtonField rbField2 = new RadioButtonField("Second field"); 
    ButtonField buttonField = new ButtonField("button"); 
    Border invisibleBorder = 
     BorderFactory.createSimpleBorder(new XYEdges(0,0,0,0));  
    public Scr() { 
     add(editField); 
     rbGroup.add(rbField); 
     rbGroup.add(rbField2); 
     add(rbField); 
     add(rbField2);  
     add(buttonField);  
     editField.setBorder(invisibleBorder); 
     rbField.setBorder(invisibleBorder); 
     rbField2.setBorder(invisibleBorder);   
     buttonField.setBorder(invisibleBorder);    
    } 
} 

Si vous en 4,5 et inférieur, essayez de remplacer drawFocus() et le laisser vide:

alt text http://img214.imageshack.us/img214/672/rbnoborder.jpg

class Scr extends MainScreen { 
    EditField editField = new EditField("edit field", "text") { 
     protected void drawFocus(Graphics graphics, boolean on) { 
     } 
    }; 
    RadioButtonGroup rbGroup = new RadioButtonGroup(); 
    RadioButtonField rbField = new RadioButtonField("First field") { 
     protected void drawFocus(Graphics graphics, boolean on) { 
     } 
    }; 
    RadioButtonField rbField2 = new RadioButtonField("Second field") { 
     protected void drawFocus(Graphics graphics, boolean on) { 
     } 
    }; 
    ButtonField buttonField = new ButtonField("button") { 
     protected void drawFocus(Graphics graphics, boolean on) { 
     } 
    }; 

    public Scr() { 
     add(editField); 
     rbGroup.add(rbField); 
     rbGroup.add(rbField2); 
     add(rbField); 
     add(rbField2); 
     add(buttonField); 
    } 
} 
+0

Merci! Cela m'a aidé à découvrir que la bordure peut également être modifiée uniquement pour un état spécifique, par exemple: rbField.setBorder (Field.VISUAL_STATE_FOCUS, invisibleBorder); –

1

Vous devrez remplacer la méthode drawFocus de l'objet en l'étendant.

+0

Déjà essayé, et n'a pas appelé super.drawFocus mais il n'a pas supprimé la bordure pour moi. –

+0

Ahh, je pense que je vois pourquoi, à partir de la réponse de Max que votre solution ne fonctionne pas pour moi. J'essaie de compiler contre 4.7 extension drawFocus est seulement la solution pour 4.6 et ci-dessous. J'aurais probablement dû mentionner ma version JDE dans mon post! –